C# 对所有类属性求和
我有一个这样的班:班名:男 姓名:丹尼尔| numOfLegs:5 | numOfHands:7 | numOfEyes:10 | numofHeads:80| numofBrains:2 我想将所有属性相加为一个int,但其代码非常长:C# 对所有类属性求和,c#,asp.net,class,attributes,C#,Asp.net,Class,Attributes,我有一个这样的班:班名:男 姓名:丹尼尔| numOfLegs:5 | numOfHands:7 | numOfEyes:10 | numofHeads:80| numofBrains:2 我想将所有属性相加为一个int,但其代码非常长: int sum= Man.numOfLegs+Man.numOfHands+Man.numOfEyes+Man.numofHeads+Man.numofBrains; 问题是我有80多个属性,而且它还在不断增长 请帮帮我:你可以用反射来做。我不知道这是不是最
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)))
如果我想把属性放在列表中?感谢您的帮助:@רושמי:更新了答案