对所有类属性求和
本文关键字:属性 求和 | 更新日期: 2023-09-27 18:16:50
我有一个这样的类:(类名:Man)
Name:"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个属性,而且还在不断增长。
请帮帮我:
你可以用反射来做。我不知道这是不是最好的办法。如果考虑这个类:
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)))