我有一個項目(MyProject的),其中包含從引用的程序集的早期綁定對象的一段代碼(我們將CommonAssembly稱呼它):鑄造早期綁定對象類型到後期綁定的對象類型
Dim myObject As CommonAssembly.MyEarlyBoundType
現在我有一個動態加載另一個程序集,因爲它不存在於所有的項目:
Dim myLateBoundObject As Object = AppDomain.CurrentDomain.CreateInstanceAndUnwrap("Utils", "Utils.MyLateBoundType")
MyLateBoundType從CommonAssembly.MyEarlyBoundType派生,而我要投給myObject的myLateBoundObject,然後以編程調用額外的成員方法 通過反射。 我曾經想過,通過提取myLateBoundOject的類型並將myObject轉換爲myLateBoundObject,它可以工作,但CType()和DirectCast()方法都不會接受提取的類型,並引用「Keyword does not named a type 「錯誤:
myLateBoundObject = DirectCast(myObject, GetType(myLateBoundObject))
我不完全知道爲什麼一個動態加載的類型不能對DirectCast使用方法,因爲如果Utils.MyLateBoundType在引用(敢肯定它不是類型的安全檢查?)‘MyPrjoect’ ,我可以執行:
myLateBoundObject = DirectCast(myObject, Utils.MyLateBoundType)
沒有任何問題 - 但這不是一個動態的解決方案。
有什麼建議嗎?
乾杯,
百勝餐飲。
是的,這似乎很多tider的方式去了解它。乾杯! – Yumbelie 2010-07-05 13:49:15