是否可以通过SimpleIoC两次注册相同的接口?

时间:2015-07-14 09:35:18

标签: c# mvvm-light ioc-container

假设我有以下服务:

public class ServiceA : IServiceA
{
     public ServiceA(IBuffer bufferA, IBuffer bufferB) 
    {
        ;//
    }
}

是否可以两次注册相同的接口?

SimpleIoc.Default.Register(() => new Buffer());
SimpleIoc.Default.Register(() => new Buffer());

我知道我可以将IServiceA注册为:

SimpleIoc.Default.Register<IServiceA>(() => new ServiceA(new Buffer(), new Buffer()));

我会偏向另一种方式:

SimpleIoc.Default.Register<IServiceA>();

但是在上面的例子中我得到了异常,因为两次注册相同的接口是不可能的。

您是否知道通过simpleIoC

两次注册相同接口的另一种方法

2 个答案:

答案 0 :(得分:2)

我非常怀疑你可以使用任何容器执行以下操作

SimpleIoc.Default.Register<IServiceA>();

IServiceA是一个接口,一个抽象。注册抽象时,您需要提供该抽象的具体实现。当您要求IServiceA

的实例时,容器无法猜测您希望它提供的实现

答案 1 :(得分:0)

我认为您需要查看命名注册。

阅读SimpleIoc文档here

您需要使用密钥注册IBuffer实现。然后指示SimpleIoc使用该密钥解决它们。

查看此link

上的第4和第5个示例