Как я могу использовать атрибуты c #? - PullRequest
2 голосов
/ 03 ноября 2011

Мне нужно создать отчет в формате PDF из нескольких классов, который будет содержать несколько свойств. Мне нужно отобразить значение свойства и метку перед ним.

Что-то вроде:

detailsCalcul:
Клиент Numero: valueOfMyProperty.

...

Я думал о том, чтобы сделать что-то вроде этого:

[NomRapport("detailsCalcul")]
public class MyClass
{
    [NomChamp("Numero client")]
    public string NumeroClient { get; set; }
}

Я успешно получил значение двух моих атрибутов:

System.Reflection.MemberInfo[] proprietes = typeof(MyClass).GetMembers();
MyClass client = new MyClass();
client.NumeroClient = "1234";
        foreach (var p in proprietes)
        {
            var aa = p.GetCustomAttributes(true);
            for (int i = 0; i < aa.Length; i++)
            {
                var test = aa[i];
                if (test.GetType() == typeof(NomChampAttribute))
                { 
                  var nomChamp = ((NomChampAttribute)attributes[i]).ToString());
                }
            }
        }

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

Спасибо за помощь,

Гийом

1 Ответ

4 голосов
/ 03 ноября 2011

Атрибут не знает контекста, к которому он применяется;Вы даже не можете добраться до собственности, не говоря уже о экземпляре.Однако, если у вас есть PropertyInfo и экземпляр, тогда:

object value = property.GetValue(instance, null);
...