【发布时间】:2015-04-10 02:29:00
【问题描述】:
“nameof”是一个了不起的想法,即使部分复制也可以很好地复制到以前的版本中。
我对以下公共财产名称特别感兴趣:
public class MyClass
{
public SomeType Myproperty {get;set;}
}
static Main()
{
MyClass myClass = new MyClass();
Console.WriteLine(Utilities.NameOf(myClass.MyProperty)); //Writes "MyProperty".
Console.ReadKey();
}
有没有办法做到这一点(可能通过反射等)?如果我们能做到这一点,它还可以通过简单地将 Utilities.NameOf 替换为 nameof 来准备我们将来升级到 C#6 时的代码。
【问题讨论】:
-
如果您可以使用像
Util.Foo(()=> myClass.MyProperty)这样的额外代码,您可以使用表达式树轻松获得。 -
@AlexeiLevenkov 可能是一个解决方案。额外的代码并不多(只是额外的
()=>)。你能告诉我怎么做吗? -
我认为stackoverflow.com/questions/671968/… 涵盖了它。如果没有,那么 SO 上应该有类似的样本。
-
@AlexeiLevenkov 我发布了一个解决方案。感谢您的建议。非常欢迎改进和进一步的建议。
标签: c# reflection keyword language-features