servicestack,ioc-container,C#,.net,Wcf,servicestack,Ioc Container" /> servicestack,ioc-container,C#,.net,Wcf,servicestack,Ioc Container" />

C# 服务堆栈如何动态注册来自不同程序集的类型

C# 服务堆栈如何动态注册来自不同程序集的类型,c#,.net,wcf,servicestack,ioc-container,C#,.net,Wcf,servicestack,Ioc Container,我已在应用程序主机中向IOC(func)注册了以下类型。下面给出的类和接口位于单独的类库中。此类库包含WCF服务引用 private void RegisteTyeps(Container container) { //Register Mapper container.Register<IMapper>(c => _mapperConfiguration.CreateMapper());

我已在应用程序主机中向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);

        }
private void RegisteTyeps(容器)
{
//寄存器映射器
container.Register(c=>_-mapperConfiguration.CreateMapper());
container.RegisterAutoWiredAs().reusedIn(ReuseScope.container);
container.RegisterAutoWiredAs().reusedIn(ReuseScope.container);
container.RegisterAutoWiredAs().reusedIn(ReuseScope.container);
}
我想添加更多的服务引用(彼此稍有不同)并生成代理。因此,我添加了更多具有各自服务引用的类库。每个类库包含“相同”的接口和类,如上所述

我希望根据请求头或其他内容动态加载/切换类库,以便只能使用具有适当服务引用和代理的特定库


如何使用服务堆栈实现这一点。有人知道吗?

您只能在Funq中针对单个类型或接口注册依赖项。如果要执行多个注册,则需要注册工厂类型,例如:

container.Register(c => new AppointmentHandlers(
     new AppointmentHandler1(),
     new AppointmentHandler2());
然后用以下方法解决:

public AppointmentHandlers AppointmentHandlers { get; set; }

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

否则您需要。

酷!我没想到工厂。它解决了我的问题。谢谢你,伙计!