Как получить атрибуты свойства внутри его геттера(сеттера)?
Изнутри любого метода можно получить информацию о нем, в том числе атрибуты метода. Возьмем простейшую программу с классом Cls и кастомным атрибутом:
public class FullAttribute : Attribute
{
string attr = string.Empty;
public FullAttribute(string atr = null)
: base()
{
attr = atr;
}
}
public class Cls
{
[FullAttribute("CustomAtttr")]
public static void TheMethod()
{
var cm = System.Reflection.MethodBase.GetCurrentMethod();
var attrs = cm.GetCustomAttributes(false);
Console.WriteLine(cm.Name + ":" + attrs.Count());
}
[FullAttribute("CustomAtttr")]
public static int TheProp
{
get
{
var cm = System.Reflection.MethodBase.GetCurrentMethod();
var attrs = cm.GetCustomAttributes(false);
Console.WriteLine(cm.Name +"+"+ attrs.Count());
return 0;
}
}
}
class Program
{
static void Main(string[] args)
{
var r = Cls.TheProp;
Cls.TheMethod();
Console.Read();
}
}
Внутри TheMethod я получаю его имя и атрибуты без проблем. Но я не могу то же самое проделать внутри геттера свойства TheProp.
Свойство инкапсулирует внутри себя метод геттера. И я могу получить его с приставкой get (get_TheProp), но я не могу получить атрибут свойства (я знаю, что я могу назначить атрибут геттеру независимо от свойства, но мне нужно получить именно атрибут самого свойства, в котором он объявлен). Есть какой-нибудь способ это сделать?