我想获取特定属性的PropertyInfo。我可以使用:
foreach(PropertyInfo p in typeof(MyObject).GetProperties()) { if ( p.Name == "MyProperty") { return p } }
但是必须有一种方法可以做类似的事情
typeof(MyProperty) as PropertyInfo
在那儿?还是我坚持进行类型不安全的字符串比较?
干杯。
您可以使用新的nameof()操作符是C#6和可用的一部分在Visual Studio 2015年更多信息在这里。
nameof()
对于您的示例,您将使用:
PropertyInfo result = typeof(MyObject).GetProperty(nameof(MyObject.MyProperty));
编译器将转换nameof(MyObject.MyProperty)为字符串“ MyProperty”,但由于Visual Studio,ReSharper等知道如何重构nameof()值,因此您无需重构就可以重构属性名,从而获得了好处。
nameof(MyObject.MyProperty)