这似乎是一个奇怪的问题,但......
public string MyProperty
{
get
{
return "MyProperty";
}
}
如何替换return语句go它返回属性名称而不进行硬编码?
答案 0 :(得分:9)
我不建议一般这样做但是我们走了:
return MethodBase.GetCurrentMethod().Name.Substring(4);
顺便说一下,使用混淆器完全搞砸了。
答案 1 :(得分:1)
如果您使用的是.NET,您还可以使用LINQ来识别:
public static string GetName<T>(Func<T> expr)
{
var il = expr.Method.GetMethodBody().GetILAsByteArray();
return expr.Target.GetType().Module.ResolveField(BitConverter.ToInt32(il, 2)).Name;
}
我不能声称这个解决方案 - 这来自here。
答案 2 :(得分:0)
switch (e.PropertyName)
{
case nameof(YourProperty):
{ break; }
// instead of
case "YourProperty":
{ break; }
}
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/nameof