比方说,我有这个简单的类:
public class MyClass
{
public String MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
获取MyProperty的PropertyInfo的方法是:
typeof(MyClass).GetProperty("MyProperty");
Run Code Online (Sandbox Code Playgroud)
这糟透了!
为什么?容易:一旦我更改属性的名称就会中断,它需要很多专门的测试才能找到像这样使用属性的每个位置,重构和使用树无法找到这些类型的访问.
有没有办法正确访问一个属性?什么,在编译时验证?
我喜欢这样的命令:
propertyof(MyClass.MyProperty);
Run Code Online (Sandbox Code Playgroud)
你现在最接近的是使用表达式树:
GetProperty<MyClass>(x => x.MyProperty)
Run Code Online (Sandbox Code Playgroud)
然后吸PropertyInfo出来GetProperty(你必须写).但是,这有点脆弱 - 没有编译时保证表达式树只是属性访问.
另一种方法是保持您正在使用的属性名称可以轻松进行单元测试,并依赖于此.
基本上你想要的是infoofC#团队已经多次谈过的神秘操作员 - 但到目前为止还没有完成切割:(
| 归档时间: |
|
| 查看次数: |
3151 次 |
| 最近记录: |