静态列表并不总是包含项目

时间:2018-09-11 08:10:57

标签: c# asp.net static

我在c#/ Asp.Net中有一个静态类

更新 到目前为止,感谢您的帮助和关注。 很明显的是,按照目前的情况,我无法按需复制此文件,因此我将进行一些其他检查,以尝试缩小问题发生的位置和方式。如果发现感兴趣的东西,我会发布更新。

public static class SiloStartup
{
    static SiloStartup()
    {
        Nodes = CreateNodes();
    }

    public static IEnumerable<SiloNode> Nodes { get; private set; }

    static IEnumerable<SiloNode> CreateNodes()
    {
        var list = new List<SiloNode>();
        // Add some nodes to the list - it will always contain nodes.
        // Nodes are added manually - list.Add(new SiloNode(...));
        SiloNode t1, t2;

        t1 = new SiloNode("t1", "Top level 1");

        t2 = new SiloNode("t2-1", "Secondary level 1");
        t2.AddQuery("1001 - 1");
        t2.AddQuery("1001 - 1");
        t2.AddQuery("1001 - 3");
        t1.AddChild(t2);

        t2 = new SiloNode("t2-2", "Secondary level 2");
        t2.AddQuery("1002 - 1");
        t2.AddQuery("1002 - 2");
        t2.AddQuery("1002 - 3");
        t1.AddChild(t2);

        t2 = new SiloNode("t2-3", "Secondary level 3");
        t2.AddQuery("1003 - 1");
        t2.AddQuery("1003 - 2");
        t2.AddQuery("1003 - 3");
        t1.AddChild(t2);

        list.Add(t1);

        return list;
    }
}

我的理解是,一旦我引用了静态类,构造函数便会触发并处理其中的代码。在这种情况下,请创建“节点”列表。因此,当我第一次请求节点时,我希望列表可以使用。

但是,我发现有时节点不包含任何节点-该列表似乎未能正确初始化。此刻似乎经过了很长一段时间(例如超时),但我不确定。

该列表是通过一系列list.Add()语句构建的,因此不需要考虑数据库或其他任何数据源。

我误解了静态在这里的工作原理吗?如果是这样,我是否可以使用更好的模式来确保此列表在命令中始终可用?

任何建议表示赞赏。

要添加的一条信息是,这是在开发中,而不是实时的。 Visual Studio 2017,因此不能完全排除此处的犯规行为。

0 个答案:

没有答案