我正在尝试确定哪个程序集包含特定类。我不想在该程序集中创建一个类型的实例,但是想要这样的东西
namespace SomeAssembly
{
class SomeClass
{
}
}
..并在我想要的客户端代码中:
Assembly containingAssembly = GetContainingAssembly(SomeClass)
答案 0 :(得分:6)
如果您拥有System.Type
个实例(例如typeof(SomeType)
),则可以查看Assembly
属性。
如果您只有一个字符串,则可以遍历AppDomain.CurrentDomain.GetAssemblies()
调用assembly.GetType(typeName)
,直到找到包含该类型的程序集。 (typeName
必须包含完整的命名空间)
请注意,这将非常慢。
如果装配没有装,你可以放弃;不可能。 (除非你自己加载程序集)
答案 1 :(得分:4)
简单:
typeof(SomeClass).Assembly;
如果你想让它成为一个功能:
public static Assembly GetContainingAssembly<T>()
{
return typeof(T).Assembly;
}
然后像这样执行:
Assembly containingAssembly = GetContainingAssembly<SomeClass>();
对于任何实例对象,它非常简单:
obj something;
something.GetType().Assembly;