2012-09-12 1 views
0

Мне нужно иметь возможность динамически создавать объекты с помощью отражения. У меня есть PropertyInfo в этот момент, и мне нужно получить Assembly этого объекта, прежде чем я могу позвонить методу CreateInstance.VB.NET - Как получить сборку из PropertyInfo?

код выглядит следующим образом:

Dim subObjectPropInfo As PropertyInfo = GetPropertyInfo(baseObject, "Name") 
Dim asm As Assembly = ????? 
Dim subObjType As Type = asm.GetType(subObjectPropInfo.PropertyType.FullName) 
Dim subObject As Object = Activator.CreateInstance(subObjType) 

Вопрос: Как я могу получить сборки для объекта, мне нужно создать экземпляр из PropertyInfo объекта? Является ли это возможным ? Если нет, каков способ сделать это?

Я использую всегда одну и ту же сборку, поэтому способ сделать это не был действительно динамичным. Теперь, когда объекты поступают из нескольких сборок, это невозможно сделать так, как раньше.

+1

Обратите внимание, что третья строка может быть упрощена до 'Dim subObjType As Type = subObjectPropInfo.PropertyType'. –

ответ

2

Попробуйте использовать свойства PropertyType.Assembly из объекта PropertyInfo.

subObjectPropInfo.PropertyType.Assembly 
+0

Это дает объявление типа объявления (сборка 'baseObject'), а не сборку объекта в свойстве' subObjectPropInfo'. – Maxime

+0

Будет ли subObjectPropInfo.PropertyType.DeclaringType.Assembly делать это вместо этого? –

+0

Я отредактировал ответ, поскольку он работал с 'PropertyType.Assemble'. Все вам благодарны за подсказку, чтобы найти его! ;-) – Maxime