使用多个属性创建对象集

duf*_*aux 5 c#

我有一个具有多个布尔(和整数)属性的对象.我想创建一个具有许多不同属性的对象集合,以获得用于测试的良好数据集.

例如

public class A
{
     public int value {get; set;} //want to try beetween 0 and 5
     public bool foo {get; set;}
     public bool bar {get; set;}
     public bool boo {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我喜欢有一个6*2*2 = 24 elementw的列表,其中value= foo0/1/2/3/4/5 ,= true/false,bar= true/false,但boo始终为false.

我可以使用24行代码来做到这一点.但是它很多,如果我再增加一个bool,那么它的行数就会增加一倍.

我可能每个属性使用一个循环,但我不认为这是一个有太多嵌套循环的好方法.我也可以通过反思来做到这一点,但我认为这是太多的工作,不是吗?

我认为还有另一种方法可以做得更好,但我找不到它.

Him*_*ere 3

这种基于循环的旧方法有什么问题?

var boolVals = new[] { true, false };
var intVals = new[] { 0, 1, 2, 3, 4, 5 };

var myList = new List<A>();

foreach(var foo in boolVals) {
    foreach(var value in intVals) {
        foreach(var bar in boolVals) {
            foreach (var boo in boolVals) {
                myList.Add(new A { value = value, foo = foo, bar = bar, boo = boo });
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您必须为添加的每个属性添加新的嵌套,并循环该属性可能具有的适当值集。

这种方法在几行易于阅读的代码中填充了值的所有可能的排列。

当然,它看起来有点难看。但它只会通过在每个添加的属性上进一步嵌套而增加。