代码之家  ›  专栏  ›  技术社区  ›  Jason Young

structuremap stackoverflow异常

  •  0
  • Jason Young  · 技术社区  · 15 年前

    当我调用“getInstance”(最后一行)时,我一直收到stackOverflow异常。是的,我所有的类型都实现了itracker。multitracker有一个具有单个参数的构造函数,该参数是itracker的数组。

    structuremap似乎忽略了这样一个事实:我告诉它,当请求itracker类型时,multi-tracker是我想要的默认类。

    我就是不能让它工作。有什么想法吗?

    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 回复  |  直到 14 年前
        1
  •  0
  •   Pure.Krome    14 年前

    我不确定我是否会这样做,但它的工作…

        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; }
        }