Можно создать атрибут, который имеет поведение, подобное CallerMemberNameAttribute
?
Я имею в виду, что я нашел google и нашел эту статью, которая говорит, что CallerMemberName - это атрибут, принадлежащий группе CompilerServices, или, другими словами, эти атрибуты изменяют способ, которым компилятор будет строить мой IL. Таким образом, невозможно воспроизвести это поведение без настройки компилятора С#.
Но я еще не уверен. У меня есть какая-то надежда, что кто-то из stackoverflow может сказать иначе. Так что этот вопрос для этого.
В некотором контексте:
Я ищу это в основном для улучшения этого кода:
public int Prop
{
{ get { return (int)this["prop"]; }
{ set { this["prop"] = value; }
}
У меня есть много классов в моем приложении, которое является словарем и имеет свойство, которое представляет определенный ключ.
Используя StackTrace
(в С# 4.0) и CallerMemberName
(в С# 5.0), я смог обновить свой код:
public int Prop
{
{ get { return Get(); }
{ set { Set(value); }
}
Теперь моя цель состоит в том, чтобы заархивировать следующее:
public int Prop { { [DicGet]get; [DicSet]set; } }
Так может кто-нибудь мне помочь? Возможно?
Можно создать атрибут, который имеет поведение, подобное CallerMemberNameAttribute?
Только путем изменения компилятора С# самостоятельно, в основном. В конце концов, вы просите о поведении, аналогичном тому, что компилятор С# имеет определенные знания и код для обработки, поэтому вы должны ожидать, что компилятору С# понадобятся конкретные знания и код для обработки вашей подобной ситуации.
Теперь моя цель состоит в том, чтобы заархивировать следующее:
public int Prop { { [DicGet]get; [DicSet]set; } }
Так может кто-нибудь мне помочь? Возможно?
Не из коробки, нет.
Опции: