#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
Комментариев нет:
Отправить комментарий