是否可以通过Property获取方法的值



我必须以编程方式将数据导出到Excel。我有一个有几个属性的类。我想知道是否可以使用循环检索所有属性的值。例如:

public class SqueezeProperties
{
    public int WidthField { get; set; }
    public string Width_unit { get; set; }
    public int ResPressure { get; set; }
    public int DensityField { get; set; }
    ......
 }

在编写excel时,我的代码为:

 t = typeof(SqueezeProperties);
 foreach (PropertyInfo field in t.GetProperties(BindingFlags.Public | BindingFlags.Instance))
                oSheet.Cells[r, c++] = field.Name;

现在输入值,有没有什么方法可以迭代并找到所有可以访问的属性的值,并将其存储在excel中?

我怀疑这是否可能。我刚刚自学了如何访问房产名称&它的细节,所以我想也许其他事情也可能,但我只是不知道。

感谢

您可以使用PropertyInfo.GetValue

(然而,根据规范,您的属性的顺序不能保证与定义顺序相同。因此,为了安全起见,您可能需要订购它们。)


此外,您可以手动创建一个集合,而不是通过反射来获取它们,这样就可以处理订单了。

例如

var properties = new Expression<Func<SqueezeProperties, object>>[]
{
    o => o.WidthField,
    o => o.Width_unit,
    //...
};
foreach (var exp in properties)
{
    var mem = (MemberExpression)exp.Body;
    var prop = (PropertyInfo)mem.Member;
    oSheet.Cells[r, c++] = prop.GetValue(squeezePropertiesInstance, null);
}

相关内容

  • 没有找到相关文章

最新更新