2017-07-31 70 views
1

我已经在App主机中注册了IOC(func)的以下类型。类&下面给出的接口位于单独的类库中。此类库包含WCF服务引用。服务栈如何动态注册来自不同程序集的类型

private void RegisteTyeps(Container container) 
     { 

      //Register Mapper 
      container.Register<IMapper>(c => _mapperConfiguration.CreateMapper()); 


      container.RegisterAutoWiredAs<AppointmentHandler, IAppointmentHandler>().ReusedWithin(ReuseScope.Container); 
      container.RegisterAutoWiredAs<CalendarHandler, ICalendarHandler>().ReusedWithin(ReuseScope.Container); 
      container.RegisterAutoWiredAs<SettingHandler, ISettingHandler>().ReusedWithin(ReuseScope.Container); 

     } 

我想添加一些更多的服务引用(比彼此略有不同),并产生proxies.Thus我加入与相应的服务多一些类库引用。每个类库中包含“相同”的界面和CLASSE正如刚才提到的 。

我想动态加载/切换基于请求头或类的东西,以便我只能使用具有相应服务参考&代理的特定库。

我怎样才能达到这与服务堆栈。任何一个有任何想法?

回答

1

您只能在Funq中注册一个类型或接口的依赖项。如果要执行多个注册,你要么需要注册一个工厂类型,e.g:

container.Register(c => new AppointmentHandlers(
    new AppointmentHandler1(), 
    new AppointmentHandler2()); 

然后解决它:

public AppointmentHandlers AppointmentHandlers { get; set; } 

public object Any(MyRequest request) 
{ 
    var dep = AppointmentHandlers.AppointmentHandler1(); 
} 

否则,你需要register them with different interfaces or use a named registration

+0

酷!我没有考虑工厂,它解决了我的问题。谢谢! – Thabo

相关问题