Пользовательские атрибуты C # из свойств

, поэтому у меня есть набор свойств из моего класса, который я хочу просмотреть. Для каждого свойства у меня могут быть настраиваемые атрибуты, поэтому я хочу их просмотреть. В этом конкретном случае у меня есть собственный атрибут в моем классе City как таковой

public class City
{   
    [ColumnName("OtroID")]
    public int CityID { get; set; }
    [Required(ErrorMessage = "Please Specify a City Name")]
    public string CityName { get; set; }
}

Атрибут определен как таковой

[AttributeUsage(AttributeTargets.All)]
public class ColumnName : System.Attribute
{
    public readonly string ColumnMapName;
    public ColumnName(string _ColumnName)
    {
        this.ColumnMapName= _ColumnName;
    }
}

Когда я пытаюсь перебрать свойства [что отлично работает], а затем перебираю атрибуты, он просто игнорирует for для атрибута и ничего не возвращает.

foreach (PropertyInfo Property in PropCollection)
//Loop through the collection of properties
//This is important as this is how we match columns and Properties
{
    System.Attribute[] attrs = 
        System.Attribute.GetCustomAttributes(typeof(T));
    foreach (System.Attribute attr in attrs)
    {
        if (attr is ColumnName)
        {
            ColumnName a = (ColumnName)attr;
            var x = string.Format("{1} Maps to {0}", 
                Property.Name, a.ColumnMapName);
        }
    }
}

Когда я перехожу к непосредственному окну для свойства, у которого есть настраиваемый атрибут, я могу сделать

?Property.GetCustomAttributes(true)[0]

Он вернет ColumnMapName: "OtroID"

Я не могу приспособить это для программной работы, хотя

5
задан WeiJun 2 November 2017 в 06:15
поделиться