0

第 3 レベルのサブクラスにバインドを追加しようとしていますが、適切な方法が見つかりません。私は Ninject 3.0 を使用しており、次のシナリオがあります。

public class ClassBase 
{
  [Inject]
  public IRepository RepositoryInstance { get; set; }
}

public class ClassA : ClassBase {} 
public class ClassB : ClassA {}

public class RepA : IRepository {}
public class RepB : IRepository {}

RepA を ClassBase にバインドして、 ClassA がそのリポジトリを持つことができるようにするにはどうすればよいですか? ClassB は RepB にバインドする必要があります。

ありがとう

4

2 に答える 2

3

WhenInjectedInto()ninjectIBindingWhenSyntax<T>インターフェイスを使用する場合があります。

したがって、バインディングコードは次のようになります

kernel.Bind<IRepository>().To<RepA>().WhenInjectedInto<ClassA>();
kernel.Bind<IRepository>().To<RepB>().WhenInjectedInto<ClassB>();
于 2012-04-18T10:15:54.347 に答える
-1

私が覚えている限りでは、Inject 属性は非推奨であり、使用すべきではありません。コンストラクターを使用して注入するか、特定のクラスでこの種のメソッドを使用します IKernel kernel = new StandardKernel(); var samurai = kernel.Get();

ここに示すように: https://github.com/ninject/ninject/wiki/Dependency-Injection-With-Ninject

于 2012-04-18T10:15:15.423 に答える