У меня есть статический класс в c # / Asp.Net
UPDATE
Спасибо за помощь и интерес до сих пор.
Что совершенно очевидно, так это то, что в настоящее время я не могу воспроизвести это по требованию, поэтому я добавлю некоторые дополнительные проверки, чтобы попытаться определить, где и как возникает проблема. Если я найду что-то интересное, я выложу обновление.
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, поэтому не могу полностью исключить любую нечестную игру здесь.