例如,我有这个简单的类:
public class MyClass
{
public String MyProperty { get; set; }
}
获取 MyProperty 的 PropertyInfo 的方法是:
typeof(MyClass).GetProperty("MyProperty");
这很糟糕!
为什么?简单:一旦我更改属性的名称,它就会崩溃,它需要大量专门的测试来找到像这样使用属性的每个位置,重构和使用树无法找到这些类型的访问。
没有任何方法可以正确访问属性吗?在编译时验证的东西?
我喜欢这样的命令:
propertyof(MyClass.MyProperty);
最佳答案
目前最接近的方法是使用表达式树:
GetProperty<MyClass>(x => x.MyProperty)
然后在 GetProperty
中提取 PropertyInfo
(您必须编写)。然而,这有点脆弱 - 没有编译时保证表达式树只是一个属性访问。
另一种选择是将您正在使用的属性名称保留在可以轻松进行单元测试的地方,并依赖它。
基本上,您想要的是神话般的 infoof
运算符,它已被 C# 团队多次讨论 - 但到目前为止还没有成功 :(
关于c# - 从属性而不是名称获取 PropertyInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2997376/