Там нет такого атрибута, но вы можете использовать C# 6 nameof
оператора:
public void SomeMethod()
{
Console.WriteLine(nameof(SomeMethod));
}
Конечно, это не динамически и автоматически вставляет имя методы вы находитесь, но требует, чтобы иметь фактическая ссылка на метод. Однако он поддерживает полный IntelliSense и также автоматически обновляется при реорганизации имени метода. И имя вставляется во время компиляции, так что вы не получите снижения производительности.
Если вы хотите поместить этот код в более центральное место, например, с помощью, например, INPC в моделях с базовым обзором, тогда ваша идея немного испорчена. Если у вас есть общий метод, который вы звоните, чтобы выяснить имя методы вы в, то он всегда будет сообщить имя методы общего метода:
public void SomeMethod()
{
Console.WriteLine(GetMethodName());
}
// assuming that a CallingMemberNameAttribute existed
public string GetMethodName([CallingMemberName] string callingMember = null)
{
return callingMember; // would be always "GetMethodName"
}
Но вместо этого, вы можете использовать CallerMemberNameAttribute
здесь снова, который затем корректно получит имя метода, вызывающего функцию GetMethodName
:
public void SomeMethod()
{
Console.WriteLine(GetMethodName());
}
public string GetMethodName([CallerMemberNamed] string callerMember = null)
{
return callerMember;
}
Спасибо, что это хорошая идея в конце :) – Jannik