2010-11-19 57 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

你可以在抽象类中包含一个构造函数,这就是我通常的做法。或者你可以使用属性注入,而不是你可以包含在接口中的构造函数。