Структурная карта Stackoverflow Исключение - PullRequest
0 голосов
/ 01 мая 2009

Я получаю исключение stackoverflow, когда я вызываю «GetInstance» (последняя строка). Все, да ВСЕ из моих типов реализуют ITracker. MultiTracker имеет конструктор с одним параметром, который является массивом ITracker.

Похоже, что StructureMap игнорирует тот факт, что я сказал ему, что MultiTracker является классом по умолчанию, который я хочу при запросе типа ITracker.

Я просто не могу заставить его работать. Есть мысли?

Container = new Container(x =>
 {
  //Multitracker takes ITracker[] in its constructor
  x.ForRequestedType<MultiTracker>().TheDefault.Is.OfConcreteType<MultiTracker>().TheArrayOf<ITracker>().Contains(z =>
   {
    z.OfConcreteType<ConcreteType1>(); //ConcreteType1 : ITracker
    z.OfConcreteType<ConcreteType2>(); //ConcreteType2 : ITracker
   });

  x.ForRequestedType<ITracker>().TheDefault.Is.OfConcreteType<MultiTracker>();
    });

//Run a test - this explodes
Container.GetInstance<ITracker>();

1 Ответ

0 голосов
/ 02 мая 2009

Я не уверен, что сделал бы это так, но это работает .....

    public void Initialize()
    {
        var container = new Container(x => 
            x.ForRequestedType<ITracker>()
            .TheDefaultIsConcreteType<MultiTracker>()
            .OnCreation(y => 
                ((MultiTracker)y).Trackers = new ITracker[]
                {
                    new ConcreteType1(), new ConcreteType2()
                }
            ));
        container.GetInstance<ITracker>();
    }

    public class MultiTracker : ITracker
    {
        public ITracker[] Trackers { get; set; }
    }
...