我有一个类似这样的课:(班级名称:男人)
姓名:“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多个属性并且不断增长。
请帮帮我:(
答案 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)))