我有一个具有多个布尔(和整数)属性的对象.我想创建一个具有许多不同属性的对象集合,以获得用于测试的良好数据集.
例如
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,那么它的行数就会增加一倍.
我可能每个属性使用一个循环,但我不认为这是一个有太多嵌套循环的好方法.我也可以通过反思来做到这一点,但我认为这是太多的工作,不是吗?
我认为还有另一种方法可以做得更好,但我找不到它.
这种基于循环的旧方法有什么问题?
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)
您必须为添加的每个属性添加新的嵌套,并循环该属性可能具有的适当值集。
这种方法在几行易于阅读的代码中填充了值的所有可能的排列。
当然,它看起来有点难看。但它只会通过在每个添加的属性上进一步嵌套而增加。
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |