考虑这段代码
var container = new Container();
var nested = container.GetNestedContainer();
var f1 = nested.GetInstance<Foo>();
var f2 = nested.GetInstance<Foo>();
var result = f1 == f2; //I want result to be false
我不想注册每个可以注入的具体类型,但我希望它们对于每个构造函数注入或调用都是唯一的GetInstance
更新:
嗯,我一定是用错了 NestedContainers?我想做的是为程序的子部分创建一个“子”容器(它是一个 WPF 客户端,因此子部分可以是一个子模型,如弹出窗口或其他)。子模型可以有自己的子模型或服务,它们可以是具体的且未注册的,也可以是已注册的 intarfaced。我根本不想注册的具体类型。我想默认使用 Structuremap 称为 AlwaysUnique 的接口,但在我的世界里,这就是瞬态生命周期。对于 99.9% 的类型,我想要 AlwaysUnique,0.01% 我想要在嵌套容器的生命周期内使用相同的引用。也许这个用例不适用于嵌套容器?
编辑:一个典型的用例是事件聚合仅在程序的一部分中,如弹出模型及其子项