这是code:
dplyr
当它尝试获取public class Program
{
public static void Main(string[] args)
{
Test test = new Test();
}
}
public class Test
{
public Test() {
Console.WriteLine("type: " + Type.GetType("Registration"));
}
}
public class Registration
{
public int mAge;
public string mName;
public Registration() {}
}
的类型时,它返回null。因此无法访问Registration
或.Name
。
仅当.AssemblyQualifiedName
未返回AssemblyQualifiedName
时,我才能提供GetType()
。
为什么null
返回null?希望问题很清楚。
答案 0 :(得分:7)
工作正常。如果它不适合你,那么可能有一个名称空间,在这种情况下你需要"TheNamespace.Registration"
。如果类型位于不同的程序集中,则还需要指定 ;最可靠的字符串版本是类型的AssemblyQualifiedName
- 可能类似于"Registration, ConsoleApp48, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
,如果涉及到强名,则更长。
但是,typeof(Registration)
比任何这些选项更容易。
答案 1 :(得分:4)
您需要指定“程序集限定”类型名称:
Type.GetType("YourNameSpace.Registration");
正如documentation所述:
的typeName 键入:System.String
要获取的类型的程序集限定名称。看到 AssemblyQualifiedName。如果类型在当前 执行程序集或在Mscorlib.dll中,它足以提供 类型名称由其命名空间限定。
答案 2 :(得分:3)
您需要指定类型的全名,包括命名空间:
Console.WriteLine("type: " + Type.GetType("Rextester.Registration"));
或者 - 取决于你想要做什么:
Console.WriteLine("type: " + typeof(Registration));
答案 3 :(得分:0)
我认为您需要定义类的完整命名空间路径,例如TestNamespace.Registration