有人可以向我解释为什么GetProperties如果类设置如下,该方法不会返回公共值.
public class DocumentA
{
public string AgencyNumber = string.Empty;
public bool Description;
public bool Establishment;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个简单的单元测试方法来玩
该方法如下,它具有所有适当的使用语句和引用.
我正在做的就是调用以下内容,但它返回0
PropertyInfo[] pi = target.GetProperties(BindingFlags.Public | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用私有成员和公共属性设置类,它可以正常工作.
我没有按照旧学校方式设置课程的原因是因为它有61个属性并且这样做会增加我的代码行数至少三倍.我会成为维护的噩梦.
我一直在寻找并发现这描述了如果值为 null 则返回 bool。我使用的代码来自此片段 Client client = new Client{ FirstName = "James"};
client.GetType().GetProperties()
.Where(pi => pi.GetValue(client) is string)
.Select(pi => (string) pi.GetValue(client))
.Any(value => string.IsNullOrEmpty(value));
Run Code Online (Sandbox Code Playgroud)
但我不想返回值是否为空(bool)的情况,而是想检索所有不为空的属性值。
我尝试更改代码,但没有成功。
非常感谢
编辑
public class Client
{
public string FirstName { get; set; }
public string LastName { get; set; }
//...
}
Client client = new Client();
client.FirstName = "James";
client.LastName = "";
Run Code Online (Sandbox Code Playgroud)
使用我的“Client”类,我想迭代类中的所有属性,并且当值不为 null 或空字符串时,我将返回该值,在本例中,我只会返回一个字符串“James ”。
希望这是有道理的。