解决方案 »

  1.   

    ContainerBuilder builder = new ContainerBuilder();
    if(selected is cat)
    {
    builder.RegisterType(Cat).As(ISay);
    }
    else
    {
    builder.RegisterType(Dog).As(ISay);
    }
    IContainer container = builder.Build();
      

  2.   

    如果是这样的话,那么这段代码还是起着与简单工厂相同的工作呐,不可以通过IOC避免吗
      

  3.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
      

  4.   

     在进行容器注册的时候,可以添加一个名称
    builder.Register(cat =>new Cat()).Named<ISay>("Cat");
    builder.Register(dog=>new Dog()).Named<ISay>("Dog");
    IContainer container = builder.Build();获取时候可以可能通过名称来获取
    container.ResolveNamed<ISay>("Cat/Dog");