2009-10-06 4 views
0

string typeName = Request.QueryString ["TypeName"]; Тип t = Тип.GetType (typeName); t.GetField («SomeField»). SetValue (?, «Hello»);Как установить значение типа динамического типа

В приведенном выше коде я создаю объект типа, в котором хранится информация о пользовательском типе, имя которого получено из QueryString.

Теперь проблема заключается в том, что этот пользовательский тип имеет SomeField, и я хочу присвоить значение этому полю, но я понятия не имею, какой тип может исходить из QueryString, поэтому я не могу сказать какой-либо конкретный тип на ? место в SetValue метод.

Что мне делать?

Заранее спасибо.

ответ

4

Это, скорее всего, неправильный способ сделать что-то. Если бы вы могли дать более конкретный пример того, что вы пытаетесь выполнить, мы могли бы предложить несколько альтернативных способов сделать это.

Если у вас нет экземпляра TypeName, значит, вы, очевидно, не можете что-то пойти вместо «?». Вы можете использовать System.Activator, чтобы создать новый экземпляр этого TypeName.

Пример:

string typeName = Request.QueryString["TypeName"]; 
Type t = Type.GetType(typeName); 
object instance = Activator.CreateInstance(t); 
t.GetField("SomeField").SetValue(instance, "Hello"); 
+0

Тип не может создать экземпляр или что-то для ее выполнения? – Tarik

+2

System.Activator - это то, что вы используете для создания экземпляра. – Jimmy

+0

Спасибо, кроме этого решения, есть ли другое решение, которое вы знаете и предлагаете мне? – Tarik

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