Mam w klasie (o nazwie dajmy na to X
) dwie listy tego typu:
public List<ClientObjectTester> Clients { get; } = new();
public List<NodeObjectTester> Nodes { get; } = new();
Obiekty w tych listach są w trakcie działania programu dynamicznie dodawane i usuwane. Obie klasy przechowywane w listach Client
i Node
dzielą ze sobą pewne cechy (implementują ten sam interfejs).
Tworzę teraz nową klasę Y
, w której odwołuję się do X
w celu dostępu do tych list. Z tym że w klasie Y
podział na 2 listy nie ma sensu, chciałbym trzymać zarówno Client
jak i Node
w jednej liście, ponieważ w klasie Y
będę operował tylko na tych współdzielonych przez obie klasy cechach.
Mógłbym zrobić coś tego typu:
var allObjects = Nodes.Concat(Clients).ToList();
Z tym, że w tym przypadku tworzy się nowa lista, ze skopiowanymi referencjami z obu łączonych list. Ja natomiast chciałbym, żeby "złączona" lista była zawsze aktualna. To znaczy, że nawet po złączeniu obu list, jeżeli w liście Nodes
pojawi się nowy obiekt, to automatycznie będzie on dostępny w tej nowej, "zbiorczej" liście. Jak coś takiego zrobić?