0

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

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

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

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

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

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

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

4

2 回答 2

5

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

public class MyClass
{
    public void MyClass(TypeA a, TypeB b)
    {
        ....
    }
}
于 2013-10-07T14:14:51.887 回答
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; }
}
于 2013-10-07T14:38:30.047 回答