Как получить значение атрибута вместе со значением свойства времени выполнения - PullRequest
0 голосов
/ 17 января 2012

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

Допустим, у меня есть определение класса:

public class MyClass
{
   [Example("MyClassID")]
   public string ID;
}

Позже в моем коде я использую экземпляр этого класса:

MyClass mc = new MyClass();
mc.ID = 18;

Есть ли способ получить значение атрибута ("MyClassID") из этого экземпляра, mc? В идеале я хотел бы иметь возможность привязать это к моей собственности, способом, подобным этому:

mc.ID.GetCustomAttributes(typeof(ExampleAttribute), false)

Ответы [ 2 ]

1 голос
/ 18 января 2012

Да, вы можете сделать это с помощью отражения:

this.GetType().GetProperty("ID").GetCustomAttributes(typeof(ExampleAttribute))

Если это не свойство (которого нет в вашем примере, но я не был уверен, было ли это функциейвопрос или нет), то вы можете использовать GetMember.

0 голосов
/ 18 января 2012

Да, вы можете получить значение атрибута.Вот пример:

 Type t = this.GetType();
 var id = t.GetProperty("ID");
 var attribute = id.GetCustomAttributes(typeof(ExampleAttribute), false).FirstOrDefault();
 if (attribute != null)
 {
       ExampleAttribute item = attribute as ExampleAttribute;
       //Do stuff with the attribute
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...