可以“实施N次”的接口设计

时间:2013-10-07 14:09:55

标签: c# oop interface

目前我正在使用通用接口来声明像这样的IoC依赖:

public interface IComposition<T>
{
  T Dependency { get; set; }
}

但实际上我的实现可能同时具有多个依赖项。

我知道这很荒谬,但只有你们才明白我需要什么...... 假设我多次实现界面来解决我的问题:

public class MyClass : IComposition<TypeA>, IComposition<TypeB>
{
  ...
}

我认为对每种类型使用IComposition<T1, T2, ...>或一个ITypeXDependent都不是好选择。 我的核心需要使用反射在运行时解决依赖关系。所以,这就是为什么我不通过构造函数传递依赖项。

有谁知道可以帮助我的一些技巧?

2 个答案:

答案 0 :(得分:5)

我会使用构造函数参数而不是当前的方案来设置依赖项:

public class MyClass
{
    public void MyClass(TypeA a, TypeB b)
    {
        ....
    }
}

答案 1 :(得分:1)

除常规接口外,通用接口可以“实施N次”,因为每个泛型类型参数都会创建另一个接口类型。唯一需要关心的是明确地实现接口:

public interface IComposition<T>
{
    T Dependency { get; set; }
}

public class MyClass: IComposition<TypeA>, IComposition<TypeB>
{
    IComposition<TypeA>.TypeA Dependency { get; set; }
    IComposition<TypeB>.TypeB Dependency { get; set; }
}