Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

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

#c_sharp


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

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

    


Ответы

Ответ 1



Решение для .NET 4.5+: public static string GetPropertyName([System.Runtime.CompilerServices.CallerMemberName] String propertyName = "") { return propertyName; } public static Object TestName { get { return X(GetPropertyName()); } }

Ответ 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

Комментариев нет:

Отправить комментарий