在.NET中,给出一种类型,名称,有没有类型被定义,告诉我,其中组件的方法(System.Reflection.Assembly的实例)?
我认为我的项目已经到集的引用,只需要知道它是哪一个。
在.NET中,给出一种类型,名称,有没有类型被定义,告诉我,其中组件的方法(System.Reflection.Assembly的实例)?
我认为我的项目已经到集的引用,只需要知道它是哪一个。
Assembly.GetAssembly假设你有类型的实例,并Type.GetType假设你有完全限定的类型名称,其中包括程序集名称。
如果只有基本类型名称,你需要做更多的东西是这样的:
public static String GetAssemblyNameContainingType(String typeName)
{
foreach (Assembly currentassembly in AppDomain.CurrentDomain.GetAssemblies())
{
Type t = currentassembly.GetType(typeName, false, true);
if (t != null) {return currentassembly.FullName;}
}
return "not found";
}
这还假定你的类型在根声明。 您将需要提供姓名命名空间或封闭类型的,或以相同的方式重复。
Assembly.GetAssembly(typeof(System.Int32))
更换System.Int32
与你发生任何类型的需要。 因为它接受一个Type
参数,你可以做任何事情这种方式,例如:
string GetAssemblyLocationOfObject(object o) {
return Assembly.GetAssembly(o.GetType()).Location;
}
我已经适应接受的答案为我自己的目的(返回装配对象,而不是程序集名称),并为重构VB.NET和LINQ的代码:
Public Function GetAssemblyForType(typeName As String) As Assembly
Return AppDomain.CurrentDomain.GetAssemblies.FirstOrDefault(Function(a) a.GetType(typeName, False, True) IsNot Nothing)
End Function
我只是分享在这里如果其他人想了LINQy解决接受的答案。
Type.GetType(typeNameString).Assembly
如果你可以使用它,这句法是最短/清洁:
typeof(int).Assembly