Создание экземпляра переменной с отражением - PullRequest
0 голосов
/ 06 января 2010

Я хочу создать экземпляр типа t с отражением, то есть

<code>
Type t = typeof(string);
string s = (t)Activator.CreateInstance(t); // this fails because of convertion
string s = Activator.CreateInstance(t) as t // also fails

Есть ли способ выполнить такое преобразование? Спасибо.

Ответы [ 2 ]

4 голосов
/ 06 января 2010

Да. Вы должны конвертировать в string, а не в t. Вы можете хотеть универсальный метод, альтернативно:

public T GetInstance<T>()
{
    Type t = typeof(T);
    T s = (T)Activator.CreateIstance(t);
    return s;
}

В настоящее время вы пытаетесь привести объект, который на самом деле является экземпляром System.String, к типу System.Type ...

1 голос
/ 06 января 2010

Попробуйте это:

string s = (string)Activator.CreateInstance(t);

Activator.CreateInstance возвращает экземпляр, заключенный в объект, поэтому он должен быть приведен к правильному типу, прежде чем вы сможете его использовать.

В вашем примере t это переменная объекта Type, а не ссылка на тип. Вы должны либо указать тип непосредственно, как в моем примере, либо использовать обобщенные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...