2010-06-08 36 views
0

我想確定哪個程序集包含特定的類。我不想在創建該程序集的類型的實例,但希望這樣的事情確定包含類名(不是類型的實例)的類的程序集

namespace SomeAssembly 
{ 
    class SomeClass 
    { 
    } 
} 

..和客戶端代碼中我想:

Assembly containingAssembly = GetContainingAssembly(SomeClass) 
+0

請不要在標題中放置「C#」等標籤。將它們留在標籤中。 – 2010-06-09 01:19:05

回答

6

如果你有System.Type實例(例如,typeof(SomeType)),您可以檢查Assembly屬性。

如果您只有一個字符串,您可以循環調用AppDomain.CurrentDomain.GetAssemblies()調用assembly.GetType(typeName),直到找到包含該類型的程序集爲止。 (typeName必須包含完整的命名空間
請注意,這將是非常緩慢。

如果程序集尚未加載,則可以放棄;不可能。 (除非你可以加載裝配自己)

4

簡單:

typeof(SomeClass).Assembly; 

如果你想成爲一個功能:

public static Assembly GetContainingAssembly<T>() 
{ 
    return typeof(T).Assembly; 
} 

然後執行類似這樣的:

Assembly containingAssembly = GetContainingAssembly<SomeClass>(); 

對於任何實例對象而言,這非常簡單:

obj something; 

something.GetType().Assembly; 
+0

這應該是'靜態'。 – SLaks 2010-06-08 22:19:37

+0

是的,它應該。 – Aren 2010-06-08 22:22:43

相關問題