Как я могу использовать атрибуты c #?

#c# #.net #custom-attributes

#c# #.net #пользовательские атрибуты

Вопрос:

Мне нужно создать отчет в формате 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. у вас есть доступ к свойству через переменную p? что вы хотите сделать ?. Кроме того, существует перегрузка для GetCustomAttributes, которые используют этот тип, и вам не нужно будет фильтровать себя

Ответ №1:

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

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

Комментарии:

1. Спасибо! Это то, чего я хотел!