У вас могут быть некоторые проблемы с Generics и подклассами (в этом случае вы должны вернуться к System.Collections.ArrayList), но вы должны привести BaseClass к подклассу, который вы хотите использовать. Если вы используете каталог «as», он будет успешным, если базовый класс может быть приведен к подклассу, или он будет нулевым, если он не может быть приведен. Это будет выглядеть примерно так:
for(int i = 0; i < MyList.Count; i++)
{
BaseClass bc = MyList[i];
ClassA a = bc as ClassA;
ClassB b = bc as ClassB;
bc.BaseClassMethod();
if (a != null) {
a.PropertyA;
}
if (b != null) {
b.PropertyB;
}
}
Кроме того, я должен отметить, что это пахнет немного плохо. Это тот код, который указывает на плохо структурированную иерархию объектов. В общем, если вы не можете сказать, что IS A BaseClass, ваш дизайн, вероятно, не так. Но, надеюсь, это поможет!