这段代码:
Type.GetType("namespace.a.b.ClassName")
返回null。
我在使用:
using namespace.a.b;
类型是存在的,它在不同的类库中,我需要通过它的名字string来获取它。
这段代码:
Type.GetType("namespace.a.b.ClassName")
返回null。
我在使用:
using namespace.a.b;
类型是存在的,它在不同的类库中,我需要通过它的名字string来获取它。
当前回答
确保逗号直接位于完全限定名之后
typeof(namespace.a.b.ClassName, AssemblyName)
因为这不会起作用
typeof(namespace.a.b.ClassName ,AssemblyName)
在这件事上我被难住了好几天
其他回答
如果它是一个嵌套类型,您可能会忘记转换。到a +
不管怎样,typeof(T).FullName会告诉你应该说什么
编辑:顺便说一句,这些用法(我相信你知道)只是编译时对编译器的指令,因此不会对API调用的成功产生任何影响。(如果你有项目或装配的参考资料,可能会有潜在的影响-因此信息不是无用的,只是需要一些过滤…)
确保逗号直接位于完全限定名之后
typeof(namespace.a.b.ClassName, AssemblyName)
因为这不会起作用
typeof(namespace.a.b.ClassName ,AssemblyName)
在这件事上我被难住了好几天
如果你的类不在当前程序集中,你必须给出qualifiedName,这段代码显示了如何获得类的qualifiedName
string qualifiedName = typeof(YourClass).AssemblyQualifiedName;
然后你可以用qualifiedName获取type
Type elementType = Type.GetType(qualifiedName);
如果程序集被引用并且Class可见:
typeof(namespace.a.b.ClassName)
GetType返回null,因为没有找到类型,使用typeof,编译器可以帮助你找出错误。
作为Type. gettype (String)需要的类型。你应该使用Assembly.CreateQualifiedName(String, String)。
string typeName = "MyNamespace.MyClass"; // Type.FullName
string assemblyName = "MyAssemblyName"; // MyAssembly.FullName or MyAssembly.GetName().Name
string assemblyQualifiedName = Assembly.CreateQualifiedName(assemblyName , typeName);
Type myClassType = Type.GetType(assemblyQualifiedName);
Version, Culture和PublicKeyToken对于assemblyName来说是不需要的,这就是为什么你可以使用MyAssembly.GetName(). name。
gettype (String):
如果类型是当前正在执行的 在Mscorlib.dll中,提供类型名就足够了 由其名称空间限定。