С# Имя из названия переменной гетера/сеттера

122
06 августа 2019, 02:20

Есть какие идеи как получить имя в случае, если свойство статическое:

public static class xWrapper
{
    public static Object TestName
    {
        get { return X(nameof(???)); } // вот тут надо получить имя "TestName"
    }
}
Answer 1

Решение для .NET 4.5+:

public static string GetPropertyName([System.Runtime.CompilerServices.CallerMemberName] String propertyName = "")
{
    return propertyName;
}
public static Object TestName
{
    get {
        return X(GetPropertyName());
    }
}
Answer 2

1.nameof(PropertyName)

2.Даный код вернет название проперти в геттере и сеттере без прямого указывания названия :

MethodBase.GetCurrentMethod().Name.Replace("set_", "").Replace("get_", "");

Код не очень красивый, зато сработает.

3.Третий путь -- подобен второму: вытягивать из стектрейса эту же информацию и подниматся на 1 уровень вверх:

public static class Props
{
    public static string CurrPropName => 
         (new StackTrace()).GetFrame(1).GetMethod().Name.Replace("set_", "").Replace("get_", "");
    public static string CurrMethodName => 
        (new StackTrace()).GetFrame(1).GetMethod().Name;
}

И если ты из проперти вызовешь Props.PropName оно вернет тебе название самой проперти. Если вызовешь Props.CurrMethodName -- даст название метода в котором ты сейчас находишся.

PS: но мне больше нравится решение MSDN.WhiteKnight

READ ALSO
c# accdb не могу добавить запись

c# accdb не могу добавить запись

в базе accdb такая таблица people

97
какой способ работы с базой данных accdb лучше

какой способ работы с базой данных accdb лучше

Работа с базой accdb происходит через клиент на C# Какой вариант оптимальный? Запросы не будут сверх частыми, мб 1-2 в минуту 1Открыть соединение...

129
Запуск WhatsApp из Xamarin.Forms

Запуск WhatsApp из Xamarin.Forms

Коллеги, доброго времени суток

119