我正在尝试使用 DryIoc 注册一个单身人士,但容器正在返回我的单身人士类的多个实例。单例类被注册为多个不同服务接口的实现类型。当从 DryIoc 请求上述任何服务接口时,我希望得到我的单例类的同一个实例,但这没有发生,我不知道为什么。
这是我正在尝试做的一个基本示例。在这个例子中,我有一个类,Foo我想将它用作接口IFoo和IBar. 换句话说,当从容器解析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方法,但这需要手动创建类,我试图避免这种情况,因为与上面的简化示例不同,现实世界的类有自己的依赖项。