C#:如何在运行时向对象添加属性?

C#:如何在运行时向对象添加属性?,第1张

概述作为一个实体类,我想在运行时添加一个属性,该怎么办? 什么需要看到属性?如果它是像数据绑定等等,TypeDescriptor应该工作: TypeDescriptor.AddAttributes(type, attribs);TypeDescriptor.AddAttributes(instance, attribs); 这只会影响System.ComponentModel的用法(而不是直接反射) 作为一个实体类,我想在运行时添加一个属性,该怎么办?解决方法 什么需要看到属性?如果它是像数据绑定等等,TypeDescriptor应该工作:
TypeDescriptor.AddAttributes(type,attribs);TypeDescriptor.AddAttributes(instance,attribs);

这只会影响System.ComponentModel的用法(而不是直接反射),但这通常是足够的 – 例如,您可以通过上述关联一个TypeConverter.

如果通过“属性”表示“属性”,那么(再次,就数据绑定而言)TypeDescriptor也有潜力,但它是不平凡的;您需要在对象上实现ICustomTypeDescriptor,或者为该类型编写一个CustomTypeDescriptor,在这两种情况下,您都需要编写自己的PropertyDescriptor实现(通常与每个实例字典进行通信).这将被任何使用的东西使用:

// only works if you use TypeDescriptionProvIDerPropertyDescriptorCollection typeProps = TypeDescriptor.GetPropertIEs(type);// works via TypeDescriptionProvIDer or ICustomTypeDescriptorPropertyDescriptorCollection objProps = TypeDescriptor.GetPropertIEs(obj);

同样,这涵盖了广泛的数据绑定和类似的场景.对于一个例子,see here – 然而,这并不是微不足道的.示例使用(从链接)在运行时添加两个属性:

Bag.AddProperty<int>("TestProp",new DefaultValueAttribute(5)); Bag.AddProperty<string>("name");
总结

以上是内存溢出为你收集整理的C#:如何在运行时向对象添加属性?全部内容,希望文章能够帮你解决C#:如何在运行时向对象添加属性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1259732.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存