2012-09-12 77 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

嘗試使用PropertyInfo對象的PropertyType.Assembly屬性。

subObjectPropInfo.PropertyType.Assembly 
+0

這給出了聲明類型程序集('baseObject'的程序集),而不是'subObjectPropInfo'屬性中對象的程序集。 – Maxime

+0

請問subObjectPropInfo.PropertyType.DeclaringType.Assembly替代它嗎? –

+0

我編輯了與'PropertyType.Assemble'一起使用的答案。所有功勞給你提示找到它! ;-) – Maxime