所以基本上我有一个测试块,它将包含许多测试街道,每个测试街道将由许多测试组成。
以下是三个班级的片段。
class DUT
{
public string PrimDeviceName { get; set; }
public string Parameters { get; set; }
}
class TestStreet
{
public string Name { get; set; }
public char Revision { get; set; }
public int XCoordinate { get; set; }
public int YCoordinate { get; set; }
public List<DUT> DUTList { get; private set; }
public TestStreet ()
{
DUTList = new List<DUT>();
}
public void addDUT(DUT DeviceUnderTest)
{
DUTList.Add(DeviceUnderTest);
}
}
class TestBlock
{
public string Name { get; set; }
public string Revision { get; set; }
public string Description { get; set; }
public List<TestStreet> TestStreetList{ get; private set; }
public TestBlock ()
{
TestStreetList = new List<TestStreet>();
}
public void addTestStreet(TestStreet street)
{
TestStreetList.Add(street);
}
}
将有一个测试块,它将包含许多测试街道,每个测试街道都有自己的属性。然后,对于每个测试街道,将有许多DUT,然后它们将拥有自己的属性。 问题是上述代码是否正确。如果它是正确的,那么我如何实际实例化它,以便我可以用一些数据填充它?我看了很多例子,但这些只是简单地创建一个列表,我的情况更复杂,我需要创建一个测试街道列表,并且对于每个测试街道,我需要创建一个DUT列表。提前谢谢。
答案 0 :(得分:-1)
将一个巨大的列表嵌套在列表中的列表中。
var testList = new List<TestBlock>
{
new TestBlock
{
Name = "name",
...
TestStreetList = new List<TestStreet>
{
new TestStreet
{
Name = "name",
...
DUTList = new List<DUT>
{
new DUT { PrimDeviceName = "a", ... },
new DUT { PrimDeviceName = "b", ... },
// repeat
}
},
new TestStreet
{
// repeat
}
}
},
new TestBlock
{
// repeat
}
};
如果可以复制任何这些项目的参考列表项,即TestStreet可能属于多个TestBlock。即使它们没有重复,这个表单也有助于压缩代码。
var testBlocks = new List<TestBlock>
{
new TestBlock { Name = "", TestStreetList = new List<TestStreet> { testStreets[0], testStreets[1] } },
new TestBlock { Name = "", TestStreetList = new List<TestStreet> { testStreets[1] } }
};
var testStreets = new List<TestStreet>
{
new TestStreet { Name = "", DUTList = new List<DUT> { testDut[0] } },
new TestStreet { Name = "", DUTList = new List<DUT> { testDut[0], testDut[1] } }
};
var testDut = new List<DUT>
{
new DUT { ... },
new DUT { ... }
};
如果你想用循环生成大量这些,你可以这样做:
var testBlocks = new List<TestBlock>();
for (int i = 0; i < b; i++)
{
var block = new TestBlock { ... };
for (int j = 0; j < s; j++)
{
var street = new TestStreet { ... };
for (int k = 0; k < d; k++)
{
var dut = new DUT { ... };
street.DUTList.Add(dut);
}
block.TestStreetList.Add(street);
}
testBlocks.Add(block);
}