Получить Тип для объявленного динамического объекта
Я хотел бы получить Тип для динамического объекта, что-то вроде:
dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
За исключением того, что в приведенном выше примере GetType() возвращает тип обертки для динамических объектов, а не тип обернутого объекта. Спасибо!
Ответы
Ответ 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();
здесь вы идете...