我有一个C#方法,它从字符串创建一个类的新实例,但是,在运行代码时出现错误。
obj = (ClassX)Activator.CreateInstance(Type.GetType("classPrefix_" + className));
ArgumentNullException未处理
值不能为空
参数名称:类型
对此错误的任何帮助都将不胜感激。
答案 0 :(得分:5)
您可能需要使用程序集限定名作为Type.GetType
的参数eg AssemblyName.Namespace.ClassName
答案 1 :(得分:3)
您可能只是缺少类名
中的命名空间答案 2 :(得分:1)
适合我:
class ClassX {}
class classPrefix_x : ClassX {}
public class Program
{
public static void Main()
{
string className = "x";
ClassX obj = (ClassX)Activator.CreateInstance(Type.GetType("classPrefix_" + className));
Console.WriteLine(obj);
}
}
结果:
classPrefix_x
不得定义您要查找的课程。你确定你输入的是正确的吗?
答案 3 :(得分:0)
您的Type.GetType("classPrefix_" + className)
来电似乎正在返回null
。这会导致ArgumentNullException
传递给CreateInstance
方法。
评估"classPrefix_" + className
并检查您确实有一个名为它所评估的类型。
使用AssemblyQualifiedName方法时,也应指定Type.GetType(即包含程序集名称和命名空间的完全限定类型名称)。
答案 4 :(得分:0)
你可能没有类型的“classPrefix_”以及className上的任何内容。 Type.GetType()调用返回null,CreateInstance抛出ArgumentNullException。
答案 5 :(得分:0)
这是因为Type.GetType(classHere)
找不到任何内容,您确定您所在的类名是否存在?请记住,如果可能的话,它应该以命名空间为前缀,除非已经在App域中加载,否则将无法在外部程序集中找到它。
答案 6 :(得分:0)
看起来Type.GetType("classPrefix_" + className)
返回null。
当找不到类型时返回null。一些可能的原因是缺少命名空间,或者尚未加载该类所在的程序集。
关于该方法的Api文档可能会提供更多内容。 http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx