【发布时间】:2017-09-14 11:50:04
【问题描述】:
比如说,我有一个简单的类:
public class MyClass
{
public String MyProperty { get; set; }
}
获取 MyProperty 的 PropertyInfo 的方法是:
typeof(MyClass).GetProperty("MyProperty");
这太糟糕了!
为什么?很简单:一旦我更改了属性的名称,它就会崩溃,它需要大量的专门测试来找到每个使用属性的位置,重构和使用树无法找到这些类型的访问。
没有任何方法可以正确访问属性吗?在编译时验证的东西?
我喜欢这样的命令:
propertyof(MyClass.MyProperty);
【问题讨论】:
-
情况变得更糟了。如果您查看 WPF,您会注意到它需要字符串属性名称来进行数据绑定以及实现 INotifyPropertyChanged 时。对于 Reflection 的用户来说,这现在不是一个极端案例,而是一般的日常用例。我目前依靠 Resharper 来帮助保持同步。
-
Unitesting 在这里帮助了我很多,但仅此而已......
-
相关堆栈溢出问题及更详细答案:stackoverflow.com/questions/491429/…
-
你可以在c#6中使用'typeof(MyClass).GetProperty(nameof(MyProperty);'
标签: c# reflection