我想確定哪個程序集包含特定的類。我不想在創建該程序集的類型的實例,但希望這樣的事情確定包含類名(不是類型的實例)的類的程序集
namespace SomeAssembly
{
class SomeClass
{
}
}
..和客戶端代碼中我想:
Assembly containingAssembly = GetContainingAssembly(SomeClass)
我想確定哪個程序集包含特定的類。我不想在創建該程序集的類型的實例,但希望這樣的事情確定包含類名(不是類型的實例)的類的程序集
namespace SomeAssembly
{
class SomeClass
{
}
}
..和客戶端代碼中我想:
Assembly containingAssembly = GetContainingAssembly(SomeClass)
如果你有System.Type
實例(例如,typeof(SomeType)
),您可以檢查Assembly
屬性。
如果您只有一個字符串,您可以循環調用AppDomain.CurrentDomain.GetAssemblies()
調用assembly.GetType(typeName)
,直到找到包含該類型的程序集爲止。 (typeName
必須包含完整的命名空間)
請注意,這將是非常緩慢。
如果程序集尚未加載,則可以放棄;不可能。 (除非你可以加載裝配自己)
簡單:
typeof(SomeClass).Assembly;
如果你想成爲一個功能:
public static Assembly GetContainingAssembly<T>()
{
return typeof(T).Assembly;
}
然後執行類似這樣的:
Assembly containingAssembly = GetContainingAssembly<SomeClass>();
對於任何實例對象而言,這非常簡單:
obj something;
something.GetType().Assembly;
請不要在標題中放置「C#」等標籤。將它們留在標籤中。 – 2010-06-09 01:19:05