首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用GetConstructor时出现异常

调用GetConstructor时出现异常
EN

Stack Overflow用户
提问于 2012-08-06 03:32:23
回答 2查看 531关注 0票数 2

我正在尝试通过反射构造以下类的实例。

代码语言:javascript
复制
public class Abc
{
    private int _a;
    public Abc(int a)
    {
        _a = a;
    }


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

}

我使用下面的代码片段来获取类的构造函数,但是当代码到达ConstructorInfo csInfo = typa.GetConstructor(types);时,我得到了一个“object reference not set to an object instance”异常。我检查了msdn,发现当Type[] types的任何元素为空时,就会发生这样的异常。我进行了调试,发现所有元素都有有效值。你能帮我找出真正的问题吗?

代码语言:javascript
复制
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();

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-08-06 03:38:00

我已经编译了你的代码(VS2010),这一行会导致空引用异常:

代码语言:javascript
复制
Type typa = ass.GetType("Abc");

typa为空。这是因为您需要带有命名空间的类名。例如:

代码语言:javascript
复制
Type typa = ass.GetType("ConsoleApplication1.Abc");

编辑:当然,只有当您的类在名称空间中时,才需要名称空间。

票数 4
EN

Stack Overflow用户

发布于 2012-08-06 03:39:21

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

示例

代码语言:javascript
复制
Type typa = ass.GetType("YourNamesPace.Abc");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11819429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档