如何在C#中填充自制数据模型

时间:2017-12-15 03:39:15

标签: c#

所以基本上我有一个测试块,它将包含许多测试街道,每个测试街道将由许多测试组成。

以下是三个班级的片段。

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列表。提前谢谢。

1 个答案:

答案 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);
}