TypeDescriptor.AddAttributes and property

本文关键字:property and AddAttributes TypeDescriptor | 更新日期: 2023-09-27 18:25:13

这样的事情可能发生吗?

存在一个具有[DataContract]特性的类。这个类有两个属性,一个是int,另一个是string。这个类有两个不同的实例。

是否可以只将[DataMember]属性动态分配给第一个实例的int属性,而只分配给第二个实例的string属性?如果是,你介意提供一个片段吗?

TypeDescriptor.AddAttributes and property

不,如果不使用动态类生成进行非常复杂的magik,就无法在运行时分配属性。

好的,我不理解TypeDescriptor:)因此,通常需要创建自己的ICustomTypeDescriptor并实现GetProperties方法来返回PropertyDescriptor(以下构造函数)的扩展属性数组。

static Attribute[] AddAttribute(Attribute[] attributes, Attribute attr) {
    Array.Resize(ref attributes, attributes.Length + 1);
    attributes[attributes.Length - 1] = new attr;
    return attributes;
}
public MyPropertyDescriptor(MemberDescriptor propDef)
       : base(propDef, AddAttribute(propDef.Attributes, new DataMembeAttribute()))