2017-07-31 8 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); 

     } 

私は私がクラスライブラリは、「同じ」インターフェースとクラッセが含まれてい.Each各サービスの参照を持ついくつかのより多くのクラスライブラリを追加した(互いによりも若干異なります)いくつかのより多くのサービス参照を追加し、proxies.Thusを生成したいです上記のように 。

私は、適切なサービス参照&のプロキシを持つ特定のライブラリのみを使用できるように、要求ヘッダーなどに基づいてクラスライブラリを動的にロード/切り替えたいと思っていました。

サービススタックでこれをどのように実現できますか?

答えて

1

Funqでは、1つのタイプまたはインターフェイスに対してのみ依存関係を登録できます。あなたは例えば、工場のタイプを登録する必要がありますいずれかの複数の登録を実行する場合:

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

Cool!私は工場について考えなかった。それは私の問題を解決する。 – Thabo

関連する問題