Получить все свойства с отражением значений - PullRequest
5 голосов
/ 19 января 2011

Я написал атрибут пользовательского свойства и установил его на пару свойств в моем классе.Теперь я хотел бы, чтобы во время выполнения получить только свойства, которые имеют этот атрибут, иметь возможность получить значение свойства, а также значения полей атрибута.Не могли бы вы помочь мне с этой задачей?спасибо за помощь

Ответы [ 3 ]

14 голосов
/ 28 апреля 2013

Вот пример:

void Main()
{
    var myC = new C { Abc = "Hello!" };
    var t = typeof(C);
    foreach (var prop in t.GetProperties())
    {
        var attr = prop.GetCustomAttributes(typeof(StringLengthAttribute), true).Cast<StringLengthAttribute>().FirstOrDefault();
        if (attr != null)
        {
            var attrValue = attr.MaximumLength; // 100
            var propertyValue = prop.GetValue(myC, null); // "Hello!"
        }
    }
}
class C
{
    [StringLength(100)]
    public string Abc {get;set;}
}
0 голосов
/ 19 января 2011

Вы можете использовать PropertyInfo.Attributes

0 голосов
/ 19 января 2011

Есть статья (с примерами кода) об этом здесь: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6099345.html

и несколько других мест, как найдено в этом поиске: http://www.bing.com/search?q=use+reflection+to+get+properties+and+values&src=IE-SearchBox&FORM=IE8SRC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...