1

マスター インターフェイスの下に 2 つのブランチがあり、ここで Ninject IOC を使用して、条件に基づいて適切なクラスを動的にロードしようとしています。これが私のクラス構造と私が抱えている問題の説明です

  Interface I 
  {
      Void method1 ();
      Void method2 ();
      Void method3 ();
  }

Abstract class A : I
{
      Abstract void method1 ();            
      Abstract void method2 ();            
      Void Method3() {  //Some implementation can be shared by all classes    }
}

支店 1

Abstract Class B : A
{
      void method1 () {   //Some implementation can be shared by B1, B2   }
}

B1 と B2 は branch1 の最下位レベルのクラスで、コードで使用されます。

Class B1 : B
{
      Void Method2() {  //Some implementation    }
}

Class B2 : B
{
      Void Method2() {  //Some implementation    }
}

しかし、次のように、Abstract クラス A の住民から始まる別のブランチがあります。

ブランチ 2

Abstract Class C : A
{
      void method1 () 
      {   
         //Some implementation which is different from in B.Method1 
         //and can be shared by C1                 
      }
}

C1 は branch2 の最下位レベルのクラスで、コードで使用されます

Class C1 : C
{
       Void Method2() {  //Some implementation    }
}

以下のように、Ninject を使用してクラスを動的にバインドおよびロードします。

Bind<I>().To<B1>();
Bind<I>().To<B2>();
Bind<I>().To<C1>();

そして、使用するようにそれらを取得しますkernel.Get<I>();

問題は、B1 と B2 が正常に返されることですが、C1 を取得すると、常に null エラーがスローされます。ここで何か不足していますか?どんな助けでも大歓迎です

4

1 に答える 1