Singleton с параметрами

Мне нужно создать экземпляр одноэлементного класса с некоторыми аргументами. Я делаю это сейчас следующим образом:

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 () ...

Считаете ли вы это нормальным сценарием? У вас есть другая идея?

править : Я знаю , что то, что я написал в качестве примера, не является потокобезопасным, потокобезопасным не является часть вопроса

33
задан veljkoz 17 November 2010 в 11:23
поделиться