#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. Спасибо! Это то, чего я хотел!