В родительском классе у меня есть коллекция. В дочернем классе я хочу показать часть коллекции родительского класса. Я хочу, чтобы изменения в любом месте влияли на другое.
Моя реальная ситуация в жизни - я создаю часть приложения, которая будет записывать дизайн базы данных. У меня есть коллекция ConstraintList внутри класса базы данных. ConstraintList содержит класс Constraint для каждого ограничения в базе данных. У меня также есть коллекция TablesList в классе Database, которая содержит классы Table. В классе Table у меня есть ForeignKeyConstraintList, где я хочу представить ограничения из родительского (класса Database) ConstraintList, которые являются ограничениями внешнего ключа для этого класса Table.
+-Database Class
|
+--ConstraintList <-----------
| |
+--TableList Same List
| |
+-Table Class |
| |
+-ForeignKeyConstraintList
Я пытался использовать существующий класс Listиз первичной коллекции и используя Linq для фильтрации в другую коллекцию List. Однако это не работает, потому что это делает два класса List. Если запись удаляется из одного списка, она все еще существует в другом списке.
Я думал о том, чтобы свойство ForeignKeyConstraintList класса Table извлекалось непосредственно из свойства ConstraintList класса Database при каждом его вызове, ноего фильтрация заставляет его создавать новый класс List, и поэтому любые записи, удаленные из ForeignKeyConstraintList, не будут удалены из ConstraintList.
Еще одна опция, с которой я до сих пор сталкивался, - это создание нового класса, реализующеготе же интерфейсы, что и List, но не наследуют его. Затем используя приватное поле для хранения ссылки на первичный класс List. Затем написание пользовательских методов Add и Remove, которые синхронизируют любые изменения обратно в ConstraintList. Мне также необходимо создать пользовательскую реализацию IEnemerable и IEnumerable, чтобы пропустить элементы, которые не соответствуют критериям фильтра.
В родительском классе у меня есть коллекция. В дочернем классе я хочу показать часть коллекции родительского класса. Я хочу, чтобы изменения в любом месте влияли на другое.