2010-11-19 91 views
0

我記住了一組類,在構造過程中,所有這些類都需要實例化 以及一些依賴對象。考慮到這些類:依賴注入到一組類中

class A { A(IDependency dep) {...} } 
class B { A(IDependency dep) {...} } 
class C { A(IDependency dep) {...} } 
class D { A(IDependency dep) {...} } 

我想DI發生在構造函數中,很顯然我希望類A,B,C,d從某些抽象類繼承或實現相同的接口。

問題:我不能在接口或抽象類中包含構造函數。

怎麼辦?從非抽象基類繼承? 基類沒有真正的意義。 使用工廠方法?從來沒有真正喜歡他們...

有什麼建議嗎?

回答

3

當然你可以在抽象類中有一個ctor。

public interface IDependency 
{ 
} 

public abstract class A 
{ 
    protected IDependency _dep; 

    protected A(IDependency dep) 
    { 
     _dep = dep; 
    } 
} 

public class B : A 
{ 
    public B(IDependency dep) : base(dep) 

    { 
    } 
} 
0

你可以在抽象類中包含一個構造函數,這就是我通常的做法。或者你可以使用屬性注入,而不是你可以包含在接口中的構造函數。