2009-07-08 65 views
3

我有一個名爲Test.dll的DLL,我有一個名爲ABC的類,它有一個方法FindTYpe。 現在,我有一個名爲TestB的項目,並在TestB中添加了Test.dll的參考。 現在,如果我試圖從Test.ABC.FindTYpe()中找到TestB中的XYZ類型,它將拋出一個異常,TypeNotLaoded Exception如何在其他裝配中添加裝配?

請看看這個問題,並告訴我如何解決它。

回答

2

您需要發佈FindType()的代碼。我的猜測是你在做類似的事情;

System.Reflection.Assembly.GetExecutingAssembly().GetTypes() 

找到要搜索的類型列表,並且TestB.dll中的類型不在Test.dll中,因此找不到該項目。

你可能想嘗試這樣的事情,而不是;

/// <summary> 
/// Returns all types in the current AppDomain 
/// </summary> 
public static IEnumerable<Type> LoadedType() 
{ 
    return AppDomain 
     .CurrentDomain 
     .GetAssemblies() 
     .SelectMany(assembly => assembly.GetTypes()); 
} 

這應該給您加載到當前應用程序域中的所有類型 - 這,除非你做什麼奇怪的AppDomain帶,將被加載到你的程序中所有類型的列表。

沒有任何代碼已經過測試,但它應該可以幫助您找到需要使用的類和方法。

0

Mos可能是您嘗試查找的類型XYZ沒有加載或不存在於應用程序查找程序集的路徑中。 Test.dll和ABC應該存在,它將您的項目中的引用添加到Test.dll中。

0

FindType中的代碼是什麼樣的? 假設您從類型名稱(字符串)創建類型,那麼您必須確保提供「程序集限定」類型名稱,而不僅僅是「本地」類型名稱。

例如檢索您要創建類型:

Type testB = Type.GetType("TestB.XYZ, TestB"); 

而不是

Type testB = Type.GetType("TestB"); 

您能否給一些細節,像一些代碼片段?

+0

嗨搶劫感謝您的時間,我得到了解決方案... – 2009-07-09 09:06:25