c # наследование коллекции
Есть ли в c # коллекция, которая поддерживает концепцию наследования, которая может иметь объекты, включающие в себя все элементы от другого, а также от себя?
Например:
HashSet<animal> animals = new HashSet<animal>();
HashSet<dog> dogs = new HashSet<dog>();
animals.also_appears_to_include(dogs);
Так, если бы я, например, добавил 2 элемента к собакам и 1 к животным, то посмотрел, сколько элементов у животных я бы увидел 3
В качестве альтернативы я мог бы поместить ссылки на вышеупомянутые 3 элемента в каждом, давая животным 3 элемента и собак 2. У меня все еще были бы два отдельных, перекрывающихся списка, что желательно, однако добавление и удаление элементов могло бы стать сложным, в этом простом примере необходимость добавления или удаления из обеих коллекций в случае добавления и удаления собак.
Или я мог бы реализовать свою собственную коллекцию с этой функциональностью.