繁体   English   中英

使用反射获取 Class 属性信息不返回任何内容

[英]Using Reflection to Get Class Property Information returning nothing

我的任务是更新大量具有相同数据类型的记录,并希望以这样的方式编写它,我不必找到每个 class object 并手动执行它们。 因此,我认为最好的方法是使用PropertyInfo进行反射。

在问这个问题之前,我已经看过以下内容;

获取 object 的所有属性如何获取 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 class 没有属性,它有字段。 有关详细信息,请参见此处 所以要么这样做:

var fields = typeof(MaterialsStructure).GetFields();

或更改您的 class:

public class MaterialsStructure
{
    public ExistingProposedDescriptionStructure boundariesField { get; set;}
    public ExistingProposedDescriptionStructure ceilingsField { get; set;}
}

现在这将起作用:

var propeties = typeof(MaterialsStructure).GetProperties();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM