C# 调用GetConstructor时发生异常

C# 调用GetConstructor时发生异常,c#,reflection,C#,Reflection,我试图通过反射构造下面的类实例 public class Abc { private int _a; public Abc(int a) { _a = a; } public void Show() { MessageBox.Show(_a.ToString()); } } 我使用下面的代码片段来获取类的构造函数,但是当代码到达ConstructorInfo csInfo=typa.GetConstr

我试图通过反射构造下面的类实例

public class Abc
{
    private int _a;
    public Abc(int a)
    {
        _a = a;
    }


    public void Show()
    {
        MessageBox.Show(_a.ToString());
    }

}
我使用下面的代码片段来获取类的构造函数,但是当代码到达
ConstructorInfo csInfo=typa.GetConstructor(类型)时,我会得到一个“对象引用未设置为对象实例”异常
我检查了msdn,发现当
Type[]types
的任何元素为null时,都会发生这种异常。我调试并发现所有元素都有有效值。你能帮我找出真正的问题吗

Assembly ass = Assembly.GetExecutingAssembly();
Type typa = ass.GetType("Abc");
Type[] types = new Type[1];
types[0] = typeof(int);

ConstructorInfo csInfo =typa.GetConstructor(types);
object [] obj = { 10 };

var AbcObj = csInfo.Invoke(obj) as Abc;

AbcObj.Show();
谢谢

我已经编译了您的代码(VS2010),这一行导致null ref异常:

Type typa = ass.GetType("Abc");
typa是空的。这是因为您需要具有名称空间的类名。例如:

Type typa = ass.GetType("ConsoleApplication1.Abc");

编辑:当然,只有当类位于名称空间中时,才需要名称空间。

您需要将名称空间与类型的名称一起传递

范例

Type typa = ass.GetType("YourNamesPace.Abc");