public class Manager : Logic.IManager
{
private IExecutor executor;
private List<IMemory> memoriesList;
private static Manager instance;
public static Manager GetInstance(List<IMemory> memList, IExecutor executor)
{
if (instance == null)
{
instance = new Manager(memList, executor);
}
return instance;
}
private Manager(List<IMemory> memList, IExecutor executor)
{
instance = new Manager();
instance.memoriesList = memList;
instance.executor = executor;
foreach (IMemory mem in memList)
{
mem.Timer.CounterFires += new EventHandler(Timer_CounterFires);
mem.StartTimer();
}
}
private Manager()
{
}
Конструктор singleton`а
Есть класс. Он реализует синглтон.
Код:
В выделеной строке в instance все поля становятся null, хотя внутри конструктора private Manager(List<IMemory> memList, IExecutor executor) все инициализируется как надо.
В чем ошибка, я не могу никак разобраться !!!
Код:
instance = new Manager();
instance.memoriesList = memList;
instance.executor = executor;
instance.memoriesList = memList;
instance.executor = executor;
а надо
Код:
this.memoriesList = memList;
this.executor = executor;
this.executor = executor;
А ещё можно воздержаться от синглтонов вообще. На этот счёт как-то было обсуждение в "Общих вопросах".
Да, спасибо, глупая ошибка. Глаз за день замылился )