получить тип для объекта, объявленного динамическим - PullRequest
28 голосов
/ 09 сентября 2011

Я хотел бы получить тип для динамического объекта, что-то вроде:

dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();

За исключением вышеприведенного, GetType () возвращает тип обертки для динамических объектов, а не тип обернутого объекта. Спасибо!

Ответы [ 2 ]

32 голосов
/ 09 сентября 2011

Тебе нужно сделать это ...

Type unknown = ((ObjectHandle)tmp).Unwrap().GetType();

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

Activator.CreateInstance(typeof(Foo))

... объект не упакован и оригинальный код работает нормально.

3 голосов
/ 09 сентября 2011

Если вы можете использовать Activator.CreateInstance, вы можете напрямую использовать:

object tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...