gpt4 book ai didi

c# - 从属性而不是名称获取 PropertyInfo

转载 作者:可可西里 更新时间:2023-11-01 08:27:46 25 4
gpt4 key购买 nike

例如,我有这个简单的类:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com