GetCustomAttributes 不返回值

本文关键字:返回值 GetCustomAttributes | 更新日期: 2023-09-27 18:32:07

我定义了一个自定义属性

[AttributeUsage(AttributeTargets.Property )]
public class FieldAttribute: Attribute
{
    public FieldAttribute(string field)
    {
        this.field = field;
    }
    private string field;
    public string Field
    {
        get { return field; }
    }
}

使用自定义属性的我的类如下所示

[Serializable()]   
public class DocumentMaster : DomainBase
{
    [Field("DOC_CODE")]
    public string DocumentCode { get; set; }

    [Field("DOC_NAME")]
    public string DocumentName { get; set; }

    [Field("REMARKS")]
    public string Remarks { get; set; }

   }
}

但是当我尝试获取自定义属性的值时,它会返回 null 对象

Type typeOfT = typeof(T);
T obj = Activator.CreateInstance<T>();
PropertyInfo[] propInfo = typeOfT.GetProperties();
foreach (PropertyInfo property in propInfo)
{
     object[] colName = roperty.GetCustomAttributes(typeof(FieldAttributes), false);
     /// colName has no values.
}

我错过了什么?

GetCustomAttributes 不返回值

拼写错误:应typeof(FieldAttribute) 。有一个不相关的系统枚举称为 FieldAttributes(在 System.Reflection 中,您在 using 指令中有它,因为PropertyInfo正确解析)。

此外,这更容易使用(假设该属性不允许重复):

var field = (FieldAttribute) Attribute.GetCustomAttribute(
          property, typeof (FieldAttribute), false);
if(field != null) {
    Console.WriteLine(field.Field);
}