Говорят, что у меня есть ряд классов:List <> конкретных типов классов
abstract class MyClass { }
class MyFirstClass : MyClass { }
class MySecondClass : MyClass { }
class MyThirdClass : MyClass { }
Я хочу сделать что-то на основе настраиваемого списка этих производных типов классов, поэтому я хочу, чтобы сохранить выбранный класс Type
s в списке. Я знаю, что могу создать List<Type>
, но теоретически могу добавить класс в этот список. С другой стороны, List<MyClass>
будет списком экземпляров этих классов, а не списком самих типов. Я мог бы также создать enum
с одним значением, соответствующим каждому производному типу, и иметь фабричный метод для создания правильного по мере необходимости, но это, по крайней мере, еще два места, которые я должен был бы обновить, когда добавлю MyFourthClass
.
Есть ли способ сделать что-то вроде new List<typeof(MyClass)>() = new[] { typeof(MyFirstClass), typeof(MyThirdClass)}
? Является ли тот факт, что я задаю этот вопрос, подразумевает проблему с моим дизайном?
Вы можете работать с «списком» и при необходимости набрасывать на производные типы. Было бы полезно узнать больше о ваш вариант использования, поскольку может быть лучший дизайн. –
Если вы после решения, в соответствии с которым компилятор сможет ограничить ваш список только производными от MyClass типов, я не думаю, что возможно. Конечно, вы можете реализовать собственный список, который отклоняет недопустимые типы во время выполнения. –
lesscode
@TyCobb: Я думаю, что OP хочет список экземпляров System.Type, а не экземпляры MyClass – lesscode