VerySource

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

如何向一个动态生成的类中添加特殊类型的Property

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-9 15:00:01 | 显示全部楼层 |阅读模式
我在代码中利用System.Reflection命名空间中的方法动态生成一个类,现在要向里面添加一个如下面代码所示的特殊的Property,请问该怎么办?

要添加的Property信息如下 :
private string filename;
[Editor(typeof(System.Windows.Forms.Design.FileNameEditor),typeof(System.Drawing.Design.UITypeEditor))]
        public string FileName
        {
            get
            {
                return filename;
            }

            set
            {
                this.filename = value;
            }
        }

这个Property就是在PropertyGrid中显示这一属性时,会出现一个"..."的小按钮,点击的时候会出来一个选择文件对话框,选定以后把选中文件的路径返回给这个Property
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-4-6 11:00:01 | 显示全部楼层
不是很好的解决方法:
在类中添加一个HashTable。其中保存数据成员。关键字是成员名。
回复

使用道具 举报

0

主题

32

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-11 16:15:01 | 显示全部楼层
一直以为反射是在运行时读取类型信息,难道还能改变类型信息。既然已经编译了,这个类型就是既成事实。
如果是动态生成一个新的类型并编译倒是可以。
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-5-1 21:00:01 | 显示全部楼层
运行时并没有改变类型信息呀,get 和 set 的信息还是String类型的,只是加上了这一行:
[Editor(typeof(System.Windows.Forms.Design.FileNameEditor),typeof(System.Drawing.Design.UITypeEditor))]
意思是改变这个属性的编辑方式,具体什么意思我还不是太清楚,光缆断了,Msdn都打不开,查找不到资料,正在郁闷着呢

回复

使用道具 举报

0

主题

32

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-2 13:30:02 | 显示全部楼层
加了attribute声明当然就是改变。
ps: 这个意思是说在设计期用FileNameEditor作为Editor,即拖到Form上看到的设计界面。
回复

使用道具 举报

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

本版积分规则

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

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