2012-04-18 124 views
0

我想添加綁定在第三級別的子類,但我找不到一個合適的方式來做到這一點。我使用Ninject 3.0和我有以下情形:Ninject注射不工作的子類

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 {} 

如何綁定到惹巴這樣ClassBase的ClassA可以有倉庫,而ClassB的應綁定到RepB?

謝謝

回答

-1

據我所知,Inject屬性已被棄用,不應使用。我會使用一個構造函數來注入它或在特定的類中我wolud使用這種方法 IKernel kernel = new StandardKernel(); var samurai = kernel.Get();

如這裏顯示:https://github.com/ninject/ninject/wiki/Dependency-Injection-With-Ninject

+0

+ 0一般男星注入將會給一個更好的結果,那麼爲什麼不指出這一點的評論。你還沒有增加這個問題本身,所以它不算作我的答案。 – 2012-04-18 20:48:38

+0

您確定Inject屬性已被棄用嗎? – khorvat 2012-04-24 11:57:29

3

您可以使用WhenInjectedInto() ninject IBindingWhenSyntax<T>接口。

所以,綁定代碼將類似於

kernel.Bind<IRepository>().To<RepA>().WhenInjectedInto<ClassA>(); 
kernel.Bind<IRepository>().To<RepB>().WhenInjectedInto<ClassB>(); 
+0

你的意思是WhenInjected * Exactly * Into,不是嗎? – 2012-04-18 20:46:41