繁体   English   中英

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

[英]Is it possible to register same interface via SimpleIoC twice?

假设我有以下服务:

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注册相同接口的方法

我非常怀疑您可以对任何容器执行以下操作

SimpleIoc.Default.Register<IServiceA>();

IServiceA是一个接口,是一个抽象。 注册抽象时,需要提供该抽象的具体实现。 当您请求IServiceA实例时,容器无法猜测您期望它提供的实现

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

在此处阅读SimpleIoc文档

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

查看此链接上的第4个和第5个示例

暂无
暂无

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

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