Подтвердить что ты не робот

Получить Тип для объявленного динамического объекта

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

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

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

4b9b3361

Ответ 1

Вам нужно сделать это...

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

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

Activator.CreateInstance(typeof(Foo))

... объект не завернут, и исходный код работает нормально.

Ответ 2

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

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

Ответ 3

Это очень просто, если вы думаете из коробки.: -)

Type theType = dynamicItem.GetType();

здесь вы идете...