我正在尝试检索对象的公共属性,但它什么也没有返回。你能告诉我我做错了吗?
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返回零项。
答案 0 :(得分:25)
你没有公共领域。他们是财产。因此,请尝试使用type.GetProperties()
。
答案 1 :(得分:8)
您正在尝试获取字段,您应该尝试拨打GetProperties()
答案 2 :(得分:1)
传递BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
以获取所有实例字段。
第二个想法,我看到你明确过滤公共领域。该课程没有任何公共领域。编译器作为属性的后备存储自动生成的字段是私有的。