求和所有类属性

时间:2014-08-07 10:13:11

标签: c# asp.net class attributes

我有一个类似这样的课:(班级名称:男人)

  

姓名:“daniel”| numOfLegs:5 | numOfHands:7 | numOfEyes:10 | numofHeads:80 |   numofBrains:2

我想将所有属性汇总到一个int中,但它的代码非常长:

int sum= Man.numOfLegs+Man.numOfHands+Man.numOfEyes+Man.numofHeads+Man.numofBrains;

问题在于我拥有80多个属性并且不断增长。

请帮帮我:(

1 个答案:

答案 0 :(得分:0)

你可以用反射来做。我不知道这是不是最好的方法。如果你考虑这个课程:

public class Man
{
    public int Foo { get; set; }
    public int Bar { get; set; }
}

然后你可以这样总结:

var man=new Man(){Bar=12,Foo=21};
var total= man.GetType()
    .GetProperties()
    .Where(w =>w.PropertyType==typeof(int))
    .Sum (s=>(int)s.GetValue(man,null));

总数将是类

中的所有int字段

修改

如果你有一个清单。你可以这样做:

var ls=new List<Man>();
ls.Add(new Man(){Bar=12,Foo=21});
var total= ls.Sum(man => man.GetType()
        .GetProperties()
        .Where(w =>w.PropertyType==typeof(int))
        .Sum (s=>(int)s.GetValue(man,null)))