如何将类属性添加到实例列表

时间:2015-04-14 17:05:38

标签: c#

我是C#中的新手。也许这太简单了,但我真的不在乎解决方案。

我有这堂课:

public class TestSetups : TabelaCtset
{
    public IList<TabelaCtsca> ValSetup { get { return m_valsetup; } }
    private static List<TabelaCtsca> m_valsetup;

    /// Constructor
    public TestSetups(IDefinitionList dlist)
        : base(dlist)
    {
        m_valsetup = new List<TabelaCtsca>();
    }
}

我有另一个class名为TestCase

public class TestCase : TabelaCttes
{
    public IList<TestSetups> Setups { get { return m_setups; } }
    private List<TestSetups> m_setups;
...
    testcase.m_setups = new List<TestSetups>();

    defs = gdl.GetDefinitions(testcase);
    while (defs.MoveNext())
        {
            TestSetups testsetup = new TestSetups(defs);
            IDefinitionList valsetup = gdl.GetDefinitions(testsetup);
            {
                TabelaCtsca ctsca = new TabelaCtsca(valsetup);
                testsetup.ValSetup.Add(ctsca);
            }
            testcase.Setups.Add(testsetup);    
        }
        return testcase;
...
}

我想将所有ctsca值放在ValSetup列表中。一切正常,除了这一行testcase.Setups.Add(testsetup);:我有TestSetups类的属性,但我的ValSetup属性总是空的,当我的时间转到另一个迭代时。

很抱歉这个奇怪的解释。我能够更详细地解释一下。

更新:在这种情况下,我在每个TestSetup中存储最后一个ValSetup值,而不是每个TestSetup的所有ValSetup。

1 个答案:

答案 0 :(得分:3)

您已将m_valsetup设为静态属性,但每次创建TestSetups的新实例时都会重新初始化。如果您希望它是TestSetups的所有实例的共享列表,那么您可以使用这样的属性初始值设定项:

private static List<TabelaCtsca> m_valsetup = new List<TabelaCtsca>();

并在构造函数中删除它的初始化。

如果您不打算共享该列表,请从其定义中删除static关键字。

相关问题