C# 为什么GetFields()不返回任何内容?
我试图检索对象的公共属性,但它什么也不返回。你能告诉我我做错了什么吗C# 为什么GetFields()不返回任何内容?,c#,C#,我试图检索对象的公共属性,但它什么也不返回。你能告诉我我做错了什么吗 public class AdHocCallReportViewModel : ReportViewModel { public string OperatorForCustEquipID { get; set; } public string OperatorForPriorityID { get; set; } public string OperatorForCallTypeID { get; s
public class AdHocCallReportViewModel : ReportViewModel
{
public string OperatorForCustEquipID { get; set; }
public string OperatorForPriorityID { get; set; }
public string OperatorForCallTypeID { get; set; }
public string OperatorForStatusID { get; set; }
}
public UpdateReportParameters(AdHocCallReportViewModel rvm)
{
var type = rvm.GetType();
foreach (var f in type.GetFields().Where(f => f.IsPublic))
{
Console.WriteLine(f.Name);
Console.WriteLine(f.GetValue(rvm).ToString());
}
}
单步执行代码时,它跳过foreach循环,因为GetFields返回零项。传递
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
以获取所有实例字段
再想一想,我发现您正在明确筛选公共字段。该类没有任何公共字段。编译器自动生成作为属性备份存储的字段是私有的。如果您试图获取字段,则应尝试调用
GetProperties()
如果您没有公共字段。它们是财产。因此,请尝试type.GetProperties()
。重复我的答案,因此采用+1=)这是不诚实的,作者接受了你的答案,我的答案是先给出的,而且答案是一样的(像这样的琐碎问题和答案经常会在几秒钟内提交。这与不诚实无关。有时你是臭虫,有时你是防风罩。如果你需要获取公共属性,而不是字段,为什么要使用此选项?Restuta:如果你想要公共属性,你不会这样做。不清楚OP试图做什么。由于他使用了GetFields
,我假设他正在查找字段。无论如何,应该指出的是,对象确实有字段,但它们是私有的。但是由于OP实现的类只有属性,因此更可能假设他正在查找属性,也可能是因为他似乎在找公众的。