循环遍历构造函数中的属性

时间:2013-10-31 20:08:19

标签: c#

有没有办法选择特定类型的所有属性并从构造函数中为其提供默认值?

我有32个int32属性,在类中有支持字段,我想在构造函数中将所有这些属性默认为-1,除了在构造函数中将它们全部写入之外的任何其他方式?

2 个答案:

答案 0 :(得分:3)

可能需要一些改进,但这样的事情可以解决问题。

class A{
    public A()
    {
        var props = this.GetType()
                .GetProperties()
                .Where(prop => prop.PropertyType == typeof(int));
        foreach(var prop in props)
        {
            //prop.SetValue(this, -1);  //.net 4.5
            prop.SetValue(this, -1, null); //all versions of .net
        }
    }
    public int ValA{get; set;}
    public int ValB{get; set;}
    public int ValC{get; set;}
}

答案 1 :(得分:1)

如果你想这样做:

void Main()
{
    var test = new Test();
    Console.WriteLine (test.X);
    Console.WriteLine (test.Y);
}

班级定义:

 public class Test 
 {
       public int X {get; set;}
       public int Y {get; set;}

       public Test()
       {
              foreach(var prop in this.GetType().GetProperties())
              {
                    if(prop.PropertyType == typeof(int))
                    {
                          prop.SetValue(this, -1);
                    }
              }
       }
 }

输出:

  

-1
  -1