繁体   English   中英

可“实施N次”的界面设计

[英]Design for interface that can be “implemented N times”

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

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

但是碰巧我的实现可能同时具有多个依赖关系。

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

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

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

有谁知道一些可以帮助我的把戏?

我将使用构造函数参数而不是当前方案来设置依赖关系:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM