是否可以在运行时添加属性或在运行时更改属性的值?
发布于 2008-09-24 19:31:43
属性是静态元数据。程序集、模块、类型、成员、参数和返回值在C#中不是一级对象(例如,System.Type
类仅仅是一个类型的反射表示)。您可以获取一个类型的属性实例,并更改属性(如果它们是可写的),但这不会影响应用于该类型的属性。
发布于 2008-09-24 19:35:44
这真的取决于你到底想要实现什么。
System.ComponentModel.TypeDescriptor可以用来向类型、属性和对象实例添加属性,但它也有一个限制,即您必须使用它来检索这些属性。如果您正在编写使用这些属性的代码,并且您可以在这些限制中生存,那么我绝对建议您这样做。
据我所知,PropertyGrid控件和visual studio设计图面是BCL中唯一使用TypeDescriptor的东西。事实上,这就是他们如何做他们真正需要做的事情的一半。
发布于 2008-09-24 19:31:11
一种解决办法可能是在运行时生成一个派生类并添加属性,尽管这可能有点夸张。
https://stackoverflow.com/questions/129285
复制相似问题