VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 721|回复: 6

关于动态创建类实例的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-2 11:40:01 | 显示全部楼层 |阅读模式
我在同一个命名空间下这样写代码:(主要功能是根据自己写的类的名称《字符串》来创建他的实例),下面的代码是成立的:
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Type typ = Type.GetType("WindowsApplication1.myCls");
            ConstructorInfo info = typ.GetConstructor(new Type[] {  });
            info.Invoke(new object[] {  });
            
        }
    }

    public class myCls
    {
        public myCls( )
        {
            MessageBox.Show("");
        }
        public myCls(int a)
        {
            MessageBox.Show(a.ToString());
        }
    }
}
如果把上面的代码中,将Form1构造函数中的代码移到另一个类中,并封装成一个DLL,再次调用外部的类myCls,就会提示引用空对象,这是为什么呢?
回复

使用道具 举报

0

主题

26

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-3-22 18:00:01 | 显示全部楼层
添加DLL引用了么??
移动后命名空间是否一致??
回复

使用道具 举报

0

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-26 13:30:01 | 显示全部楼层
描述不太清楚哦
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-4-10 15:30:01 | 显示全部楼层
dll已经添加引用了,命名空间一致与不一致的结果都是一样的,希望大侠帮一下哦
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-25 09:45:01 | 显示全部楼层
我也遇到了这个问题,似乎只能用反射来解决。
不知道不用反射的话是否可行?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-25 10:00:01 | 显示全部楼层
WindowsApplication1.myCls只是类的名字,这样用reflection的话.NET只会在当前的assembly(dll)里面找myCls的定义。

比如说Form1和myCls编译以后的Dll文件名是AAA.DLL,那么用下面的语句:

Type typ = Type.GetType("WindowsApplication1.myCls,AAA");

回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-8-25 10:45:01 | 显示全部楼层
假如调用这个重载方法,就看到错误信息了

Type typ = Type.GetType("WindowsApplication1.myCls", true);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表