【问题标题】:dependency injection into a set of classes依赖注入到一组类
【发布时间】:2010-11-19 11:48:29
【问题描述】:

我想到了一组需要实例化的类 在构造过程中带有一些依赖对象。考虑这些类:

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

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

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

有什么建议吗?

【问题讨论】:

    标签: c# inheritance dependency-injection constructor


    【解决方案1】:

    当然,您可以在抽象类中拥有一个 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)
    
        {
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以在抽象类中包含一个构造函数,这就是我通常这样做的方式。或者你可以使用属性注入来代替你可以包含在接口中的构造函数。

      【讨论】:

        猜你喜欢
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-02
        相关资源
        最近更新 更多