2016-08-03 3 views
1

У меня есть следующий код, но я не могу его запустить. Все, что я хочу создать список экземпляров из определенного списка типов.Получение экземпляров из списка типов

List<Type> types = new List<Type> 
{ 
    typeof(String), 
    typeof(Double), 
    typeof(Object) 
}; 

List<object> instances = types.Select(t => Activator.CreateInstance(t) as t); 

Я получаю ошибку

> t is a variable but is used like a type 
+2

Не могли бы вы exaplin «* я не могу запустить его»? Дальше? –

+0

Я редактировал вопрос с синтаксической ошибкой, которую я получаю. – heltonbiker

+1

Ну, это даже не будет скомпилировано, поскольку вы пытаетесь применить его к фактическому типу, который вы можете сказать. Список экземпляры = типы. Выберите (t => Activator.CreateInstance (t)). ToList(); но это все равно будет ломаться во время выполнения, так как не все из них имеют конструкторы по умолчанию. –

ответ

2

Ошибка компиляции здесь в связи с тем, что, говоря как т вы не позволяя компилятору авто приведение его типа объекта. Этот код по-прежнему неисправен, так как требует, чтобы все типы в списке имели конструкторы по умолчанию (строка не имеет конструктора по умолчанию).

+0

Код в вашем комментарии работает, и типы в моем коде означают в качестве примеров. Я планирую создать «Список » и использовать производные типы для создания полиморфных экземпляров. – heltonbiker

+0

Не знаю точно, в чем цель здесь, но однажды я написал такой код, это оказалось безумно вонючим кодом. –

+0

У меня есть некоторые возможные вычисления. Я хочу, чтобы мое приложение выполнялось. Для каждого экземпляра 'Selection', который я создаю, мне нужны вычисления, поэтому у меня есть класс для каждого типа вычислений. Я хочу создать при запуске приложения через IoC или динамическую загрузку dll список всех возможных вычислений, которые я мог бы создать. Поэтому, если у меня есть базовый класс 'Calculation' и подклассы' MaxCalculation', 'AverageCalculation' и т. Д. И для каждого' Selection', который я создаю, мне нужен один экземпляр каждого доступного подкласса 'Calculation'. И я полностью согласен, что мой код пахнет так, как сейчас. – heltonbiker

Смежные вопросы