GetCustomAttributes не возвращает значение

Я определил пользовательский атрибут

[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 object

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.
}

что я упустил?

1 ответов


опечатка: должно быть typeof(FieldAttribute). Существует несвязанное системное перечисление FieldAttributes (in System.Reflection, который у вас в вашем using директивы, начиная с PropertyInfo правильно разруливает).

кроме того, это более простое использование (при условии, что атрибут не допускает дубликатов):

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