如何获得属性名称?

时间:2009-10-30 11:53:47

标签: c# properties

这似乎是一个奇怪的问题,但......

public string MyProperty
{
    get
    {
        return "MyProperty";
    }
}

如何替换return语句go它返回属性名称而不进行硬编码?

3 个答案:

答案 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)

从C#6开始,您可以使用nameof属性来打印属性名称或方法名称。

switch (e.PropertyName)
{
    case nameof(YourProperty):
    { break; }

    // instead of
    case "YourProperty":
    { break; }
}

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/nameof