Как получить значение из атрибута? - PullRequest
1 голос
/ 30 марта 2011

Давайте иметь атрибут с параметром int в ctor

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
public class EntityBindingAttribute : Attribute
{
    public int I { get; set; }

    public EntityBindingAttribute(int i)
    {
        I = i;
    }
}

Как я могу получить доступ к этому значению с помощью кода?

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Вы бы использовали метод Attribute.GetCustomAttributes с перегрузкой, соответствующей объекту, для которого был установлен атрибут.

Например, если атрибут установлен для метода, что-то вроде:

MethodInfo mInfo = myClass.GetMethod("MyMethod");
foreach(Attribute attr in Attribute.GetCustomAttributes(mInfo))
{
   if (attr.GetType() == typeof(EntityBindingAttribute))
   {
     int i = ((EntityBindingAttribute)attr).I);
    }
}
1 голос
/ 30 марта 2011
// Get all the attributes for the class
Attribute[] _attributes = Attribute.GetCustomAttributes(typeof(NameOfYourClass));

// Get a value from the first attribute of the given type assuming there is one
int _i = _attributes.Where(_a => _a is EntityBindingAttribute).First().I;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...