小编Bra*_*ker的帖子

使用 DryIoc 创建具有多个服务注册的单例

问题

我正在尝试使用 DryIoc 注册一个单身人士,但容器正在返回我的单身人士类的多个实例。单例类被注册为多个不同服务接口的实现类型。当从 DryIoc 请求上述任何服务接口时,我希望得到我的单例类的同一个实例,但这没有发生,我不知道为什么。

一个例子

这是我正在尝试做的一个基本示例。在这个例子中,我有一个类,Foo我想将它用作接口IFooIBar. 换句话说,当从容器解析IFoo或时IBar,我希望Foo返回相同的实例。

服务接口

interface IFoo
{   
}
interface IBar
{   
}
Run Code Online (Sandbox Code Playgroud)

单例(实现)类

class Foo : IFoo, IBar
{
}
Run Code Online (Sandbox Code Playgroud)

考试

Container container = new Container();
container.Register<IFoo, Foo>(Reuse.Singleton);
container.Register<IBar, Foo>(Reuse.Singleton);

object foo = container.Resolve<IFoo>();
object bar = container.Resolve<IBar>();
Assert.AreSame(foo, bar); // Why does this fail?
Run Code Online (Sandbox Code Playgroud)

考虑的解决方案

我已经考虑使用 DryIoc 的RegisterInstance方法,但这需要手动创建类,我试图避免这种情况,因为与上面的简化示例不同,现实世界的类有自己的依赖项。

c# dryioc

6
推荐指数
1
解决办法
2426
查看次数

标签 统计

c# ×1

dryioc ×1