1

呼び出し元に応じて条件付きでインスタンスを作成する必要があります。

場合によっては、「深い」タイプの「NullService」を持つ複合オブジェクト インスタンスが必要になります。

それ以外の場合は、代わりに「ConcreteService」を注入します

私は次のようなものを期待しています:

Get<Root>.with(NullService)

また

 Get<Root>.with(ConcreteService)

または、構築をバインドして、呼び出し元のコンテキストにさかのぼることができればなおさらです。

Bind<IService>.to(ConcreteService).
Bind<IService>.to(NullService).only.whenCallerIsTypeOf(CallerWhosNeedsANullService)

出来ますか?

4

1 に答える 1

1

2つの方法があります:

  1. どちらを使用するかを計算できる場合は、独自の条件を使用してください。

    Bind<IService>.To(NullService)
        .When(ctx => IsCallerWhosNeedsANullService(HttpContext.Current.Request));
    
  2. 名前付きバインディングを使用する

    Bind<Root>().ToSelf().Named("DefaultRoot");
    Bind<Root>().ToSelf().Named("NullRoot");
    Bind<IService>.To(ConcreteService);
    Bind<IService>.To(NullService).WhenAnyAnchestorNamed("NullRoot");
    
    Get<Root>("NullRoot");
    
于 2012-08-10T08:02:08.613 に答える