代码之家  ›  专栏  ›  技术社区  ›  cvsguimaraes

可“实现N次”的接口设计

  •  0
  • cvsguimaraes  · 技术社区  · 12 年前

    目前,我正在使用一个通用接口来声明IoC依赖项,如下所示:

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

    但碰巧的是,我的实现可能同时有多个依赖项。

    我知道这很荒谬,但只是为了让你们明白我需要什么。。。 假设我多次实现该接口来解决我的问题:

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

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

    有人知道什么能帮我的把戏吗?

    2 回复  |  直到 12 年前
        1
  •  5
  •   Lasse V. Karlsen    12 年前

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

    public class MyClass
    {
        public void MyClass(TypeA a, TypeB b)
        {
            ....
        }
    }
    
        2
  •  1
  •   cvsguimaraes    12 年前

    除了常规接口之外,通用接口可以“实现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; }
    }