2010-05-10 73 views
2

我嘗試從.dll(它也在執行項目中引用)中領導類型。我呼籲:assembly.GetTypes()不返回所有類型

public static void LoadPlugin(string pluginFile) 
    { 
     Assembly assembly = Assembly.LoadFrom(pluginFile); 

     foreach (Type type in assembly.GetTypes()) 
     { 
      // play with it 
     } 
    } 

它加載只是其中的幾個:

public partial class Mathematics : UserControl, IMathematics, IPortable 

public partial class Welcome : UserControl 

但接下來的一個,和其他一些人,被忽略:

public partial class Test : UserControl, ITest, IPortable 

他們都站在同一個大會,在s ame命名空間。 public static void LoadPlugin(string pluginFile)方法位於執行項目中也引用的其他程序集中。

不引發任何異常。 未加載所有類型的問題可能是什麼?有任何想法嗎?

+0

我有一個類似的問題,因爲GetTypes()沒有返回在程序集中定義的所有PUBLIC類,並且都具有Export屬性。我不知道它是巧合還是什麼,但它碰巧實現了一個接口的類型(就像你有)沒有被報告,而不實現接口的類型被報告 – 2014-08-07 15:29:18

回答

2

未裝載的類型是否從第三個程序集繼承,該第三個程序集未從調用程序集中正確引用?

+0

嗨,並感謝您的答覆。 我正在使用2個程序集: 1.包含我感興趣的類型。此項目在執行項目中有參考。 2.包含加載程序集邏輯的項目。這個有一個在沒有參考。 1.項目,也在執行項目中。 我剛剛重建了項目(刪除所有內容,然後新建項目,添加了包含類的文件等)。現在,出於某種原因,我可以獲得一些我在重建之前沒有得到的類型。此外,我之前獲得的一些類型不再可見。 我在哪裏做錯了? – meta 2010-05-10 09:38:41