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

时间:2013-08-24 12:13:32

标签: c# wpf properties propertyinfo

我必须以编程方式将数据导出到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中?

我怀疑是否有可能。我只是教自己如何访问属性名称&它的细节,所以我想也许另一件事也可能,我根本就没有意识到它。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用PropertyInfo.GetValue

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


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

e.g。

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);
}