依赖注入一组类

时间:2010-11-19 11:48:29

标签: c# inheritance dependency-injection constructor

我想到了一组所有需要实例化的类 在构造期间使用一些依赖对象。考虑这些类:

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从一些抽象类继承或实现相同的接口。

问题:我不能在接口或抽象类中包含构造函数。

怎么办?从非抽象基类继承? 基类没有实际意义。 使用工厂方法?真的不喜欢他们......

有什么建议吗?

2 个答案:

答案 0 :(得分: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)

    {
    }
}

答案 1 :(得分:0)

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