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

时间:2017-07-31 14:13:06

标签: c# .net wcf servicestack ioc-container

我在App host.Classes&中注册了以下类型的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);

        }

我想添加一些服务引用(它们彼此略有不同)并生成代理。因此我添加了一些具有相应服务引用的类库。每个类库包含如上所述的“相同”接口和classe。

我想根据请求标题或其他东西动态加载/切换类库,以便我只能使用具有相应服务引用的特定库。代理。

我如何通过服务堆栈来实现这一点。任何人都有任何想法?

1 个答案:

答案 0 :(得分:1)

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

public AppointmentHandlers AppointmentHandlers { get; set; }

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

然后用以下方法解决:

{{1}}

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