我想到了一组所有需要实例化的类 在构造期间使用一些依赖对象。考虑这些类:
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从一些抽象类继承或实现相同的接口。
问题:我不能在接口或抽象类中包含构造函数。
怎么办?从非抽象基类继承? 基类没有实际意义。 使用工厂方法?真的不喜欢他们......
有什么建议吗?
答案 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)
你可以在抽象类中包含一个构造函数,这就是我通常的做法。或者您可以使用属性注入而不是构造函数,您可以将其包含在界面中。