Мне нужно создать экземпляр одноэлементного класса с некоторыми аргументами. Я делаю это сейчас следующим образом:
class SingletonExample
{
private SingletonExample mInstance;
//other members...
private SingletonExample()
{
}
public SingletonExample Instance
{
get
{
if (mInstance == null)
{
throw new Exception("Object not created");
}
return mInstance;
}
}
public void Create(string arg1, string arg2)
{
mInstance = new SingletonExample();
mInstance.Arg1 = arg1;
mInstance.ObjectCaller = new ObjectCaller(arg2);
//etc... basically, create object...
}
}
Экземпляр создается «поздно», что означает, что у меня нет всех необходимых аргументов при запуске приложения.
В целом мне не нравится принудительное упорядочивание вызовы методов, но другого выхода здесь я не вижу. IoC тоже не решит эту проблему, поскольку там, где я могу зарегистрировать ее в контейнере, я могу также вызвать Create () ...
Считаете ли вы это нормальным сценарием? У вас есть другая идея?
править : Я знаю , что то, что я написал в качестве примера, не является потокобезопасным, потокобезопасным не является часть вопроса