首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在C#中动态添加属性?

是否可以在C#中动态添加属性?
EN

Stack Overflow用户
提问于 2008-09-24 19:22:21
回答 9查看 105.2K关注 0票数 149

是否可以在运行时添加属性或在运行时更改属性的值?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-24 19:31:43

属性是静态元数据。程序集、模块、类型、成员、参数和返回值在C#中不是一级对象(例如,System.Type类仅仅是一个类型的反射表示)。您可以获取一个类型的属性实例,并更改属性(如果它们是可写的),但这不会影响应用于该类型的属性。

票数 67
EN

Stack Overflow用户

发布于 2008-09-24 19:35:44

这真的取决于你到底想要实现什么。

System.ComponentModel.TypeDescriptor可以用来向类型、属性和对象实例添加属性,但它也有一个限制,即您必须使用它来检索这些属性。如果您正在编写使用这些属性的代码,并且您可以在这些限制中生存,那么我绝对建议您这样做。

据我所知,PropertyGrid控件和visual studio设计图面是BCL中唯一使用TypeDescriptor的东西。事实上,这就是他们如何做他们真正需要做的事情的一半。

票数 71
EN

Stack Overflow用户

发布于 2008-09-24 19:31:11

一种解决办法可能是在运行时生成一个派生类并添加属性,尽管这可能有点夸张。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/129285

复制
相关文章

相似问题

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