设计可以“实现N次”的接口
本文关键字:接口 实现 | 更新日期: 2023-09-27 18:34:10
目前我正在使用一个通用接口来声明 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; }
}