gpt4 book ai didi

c# - 使用反射获取类属性信息不返回任何内容

转载 作者:行者123 更新时间:2023-12-04 08:09:17 25 4
gpt4 key购买 nike

我的任务是更新大量具有相同数据类型的记录,并希望以这样一种方式编写它,我不必找到每个类对象并手动执行它们。因此,我认为最好的方法是使用反射使用 PropertyInfo .
在问这个问题之前,我已经看过以下内容;
Getting ALL the properties of an object
How to get the list of properties of a class?
https://www.codegrepper.com/code-examples/csharp/c%23+get+all+class+properties
https://docs.microsoft.com/en-us/dotnet/api/system.type.getproperties?view=net-5.0
看着这个,建议我采用正确的方法,但对于我的生活,我没有得到结果。
代码如下

void Main()
{
var propeties = typeof(MaterialsStructure).GetProperties(BindingFlags.Public | BindingFlags.Static);

}

public class MaterialsStructure
{
public ExistingProposedDescriptionStructure boundariesField;

public ExistingProposedDescriptionStructure ceilingsField;
}

public class ExistingProposedDescriptionStructure
{

public string Existing { get; set; }
public string Proposed { get; set; }
public bool NotApplicable { get; set; }
public bool DontKnow { get; set; }
}
问题是,当我检查属性时,它在数组中有 0 个项目,我原以为它有两个类型为 ExistingProposedDescriptionStructure 的属性。 .如果有人能告诉我我哪里出错了,我将不胜感激。

最佳答案

您的 MaterialsStructure类没有属性,它有字段。见 here有关更多详细信息。所以要么这样做:

var fields = typeof(MaterialsStructure).GetFields();
或者改变你的类(class):
public class MaterialsStructure
{
public ExistingProposedDescriptionStructure boundariesField { get; set;}
public ExistingProposedDescriptionStructure ceilingsField { get; set;}
}
现在这将起作用:
var propeties = typeof(MaterialsStructure).GetProperties();

关于c# - 使用反射获取类属性信息不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66064505/

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