gpt4 book ai didi

c# - System.Reflection GetProperties 方法不返回值

转载 作者:IT王子 更新时间:2023-10-29 04:25:55 25 4
gpt4 key购买 nike

有人可以向我解释一下,如果按如下方式设置类,为什么 GetProperties 方法不会返回公共(public)值。

public class DocumentA
{
public string AgencyNumber = string.Empty;
public bool Description;
public bool Establishment;
}

我正在尝试设置一个简单的单元测试方法来尝试

该方法如下,它具有所有适当的 using 语句和引用。

我所做的只是调用以下但它返回 0

PropertyInfo[] pi = target.GetProperties(BindingFlags.Public | BindingFlags.Instance);

但是如果我用私有(private)成员和公共(public)属性设置类,它就可以正常工作。

我没有以老派方式设置类的原因是它有 61 个属性,这样做会使我的代码行数至少增加三倍。我将成为维护的噩梦。

最佳答案

您还没有声明任何属性 - 您已经声明了字段。这是具有属性的类似代码:

public class DocumentA
{
public string AgencyNumber { get; set; }
public bool Description { get; set; }
public bool Establishment { get; set; }

public DocumentA()
{
AgencyNumber = "";
}
}

我强烈建议您使用上述属性(或者可能使用更受限制的 setter ),而不是仅仅更改为使用 Type.GetFields。公共(public)字段违反封装。 (公共(public)可变属性在封装方面不是很好,但至少它们提供了一个 API,其实现可以在以后更改。)

关于c# - System.Reflection GetProperties 方法不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838189/

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