我有一個名爲Test.dll的DLL,我有一個名爲ABC的類,它有一個方法FindTYpe。 現在,我有一個名爲TestB的項目,並在TestB中添加了Test.dll的參考。 現在,如果我試圖從Test.ABC.FindTYpe()
中找到TestB中的XYZ類型,它將拋出一個異常,TypeNotLaoded Exception
。如何在其他裝配中添加裝配?
請看看這個問題,並告訴我如何解決它。
我有一個名爲Test.dll的DLL,我有一個名爲ABC的類,它有一個方法FindTYpe。 現在,我有一個名爲TestB的項目,並在TestB中添加了Test.dll的參考。 現在,如果我試圖從Test.ABC.FindTYpe()
中找到TestB中的XYZ類型,它將拋出一個異常,TypeNotLaoded Exception
。如何在其他裝配中添加裝配?
請看看這個問題,並告訴我如何解決它。
您需要發佈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帶,將被加載到你的程序中所有類型的列表。
沒有任何代碼已經過測試,但它應該可以幫助您找到需要使用的類和方法。
Mos可能是您嘗試查找的類型XYZ沒有加載或不存在於應用程序查找程序集的路徑中。 Test.dll和ABC應該存在,它將您的項目中的引用添加到Test.dll中。
FindType中的代碼是什麼樣的? 假設您從類型名稱(字符串)創建類型,那麼您必須確保提供「程序集限定」類型名稱,而不僅僅是「本地」類型名稱。
例如檢索您要創建類型:
Type testB = Type.GetType("TestB.XYZ, TestB");
而不是
Type testB = Type.GetType("TestB");
您能否給一些細節,像一些代碼片段?
嗨搶劫感謝您的時間,我得到了解決方案... – 2009-07-09 09:06:25