Допустим есть 3 разных класса, A (родительский) и два наследника B и C.
public class A { ... };
public class B : A { ... };
public class C : A { ... };
Это упрощенная схема, иерархия может быть и сложнее, у B и C могут быть наследники и.т.д. И вопрос в следующем, как лучше всего архитектурно подойти к решению по работе со списками в которых могут фигурировать классы из этой иерархии.
Например, есть списки и метод который добавляет класс B и класс C в список, и соответственно под каждый отдельный список + общий список для A. Выглядит это так:
public List<A> AList = new List<A>();
public List<B> BList = new List<B>();
public List<C> CList = new List<C>();
public void Add_B(B obj) {
AList.Add(obj);
BList.Add(obj);
}
public void Add_C(C obj) {
AList.Add(obj);
CList.Add(obj);
}
Является ли это вообще корректным решением? Чем больше классов задействуется в иерархии, тем сильнее это превращается в спагетти из списков, еще и давит на оперативку, но в каком то смысле проще работать с нужными классами. С другой стороны рассматривается вариант добавлять только в AList, и с помощью "is" определять нужный тип и работать с ним, но влияет ли это на производительность? Какие еще есть варианты для построения работы с массивами объектов-родителей-наследников с которыми работа может быть по отдельности или со всеми сразу?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Имеется обычный TreeViewПри нажатии правой кнопкой мыши по treeviewitem вылезает меню (добавляет/удаляет запись в/из коллекции)
Мне необходимо читать текстовый файл, что находится в архиве построчноРаспаковывать его на жесткий диск нельзя
Необходимо реализовать обрезку изображения по кругу с выбором области обрезки по типу, как это сделано, например, тут либо другой способ...