2011-11-14 27 views
0

檢索值我有一個這樣的代碼如下所示 在這裏,在該方法中作爲未來其中"_Rounded_TreeGOLD, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"是用戶定義的類的組件的名稱和「xmlSerializableType.Name」爲「_Rounded_Tree」「xmlSerializableType.AssemblyName」值。在這裏,我需要將'xmlSerializableType.Name'分配給'type',類似於"GetType(xmlSerializableType.Name);",以便'type'變爲type = {Name =「_Rounded_Tree」FullName =「_Rounded_Tree」}如何實現這一目標,鍵入」如何從組件

回答

0

像沃特說,裝配,使用Assembly.Load( 「AssemblyLongName」)。 在該程序集上,您只能使用assembly.GetTypes()或更好的assembly.GetExportedTypes()作爲「public」類型。

迭代類型並檢查它們的名稱。例如,您可以使用asmType.BaseType == typeof(yourBaseType)或 typeof(yourBaseType).IsAssignableFrom(asmType)。例如,您可以使用asmType.BaseType == typeof(yourBaseType)或 typeof(yourBaseType).IsAssignableFrom(asmType)。

看看MSDN鏈接,我很肯定你會發現那裏需要的一切。

如果您確實知道確切的名稱assembly.GetType(「yourExactTypeName」)也應該工作。

+0

Assembly.Load的問題是它會觸發一個事件處理程序'Assembly AssemblyResolve'(對象發件人,ResolveEventArgs args)'這個事件處理程序代碼,我剛剛在我的問題中更新了。 '類'由於'DataModelObjects'的不加載而無法加載。這會在加載應用程序的過程中發生,但是在本身它會返回null,並會觸發異常,即使該程序集存在,但不會退出 – rickymartin

+0

只需在解析程序中加載其他程序集即可。 如果有什麼阻止,我沒有得到它。 您可以在該事件處理程序中使用Assembly.LoadFrom或Assembly.LoadFile。 但是,如果你加載當前(讀取默認)appdomain的第一個程序集,應該已經加載了程序集,我猜。如果不知道更多的應用程序,這很難說清楚。 – Jobo

+0

您是否嘗試過爲您的AppDomain設置PrivateBinPath(http://msdn.microsoft.com/en-us/library/system.appdomainsetup.privatebinpath.aspx)?你使用不同的AppDomain嗎? – Jobo