StructureMap:无法为嵌套容器

时间:2017-05-31 04:38:01

标签: .net structuremap

我使用

等代码成功地在SM中使用了开放式泛型
For(typeof(IConnectedClient<,>)).Use(typeof(WcfConnectedClient<,>));

然后我需要开始使用嵌套容器进行&#34;会话&#34;我的申请范围。 在此嵌套容器中创建的每个IConnectedClient我都需要是唯一的,并且还会自动处理。

不幸的是,经过多次实验,我无法满足这些要求。

所有这些都无法实际返回唯一实例,但实例处理掉了:

For(typeof(IConnectedClient<,>)).Use(typeof(WcfConnectedClient<>)).AlwaysUnique(); 
For(typeof(IConnectedClient<,>)).Use(typeof(WcfConnectedClient<,>)).SetLifecycleTo<TransientLifecycle>();
For(typeof(IConnectedClient<,>)).LifecycleIs(new TransientLifecycle()).Use(typeof(WcfConnectedClient<,>));
For(typeof(IConnectedClient<,>)).LifecycleIs(new TransientLifecycle()).Use(typeof(WcfConnectedClient<,>)).LifecycleIs<TransientLifecycle>();

这会返回唯一的实例,但它们不会被处理掉(我希望perRequest不是我想要的):

  For(typeof(IConnectedClient<,>)).LifecycleIs(new UniquePerRequestLifecycle()).Use(typeof(WcfConnectedClient<,>));

如何将open-generic配置为可以创建新实例并将它们配置为嵌套容器?

1 个答案:

答案 0 :(得分:0)

我已升级到SM 4.5.x,现在可以使用以下内容:

For(typeof(IConnectedClient<,>)).LifecycleIs(new UniquePerRequestLifecycle()).Use(typeof(WcfConnectedClient<,>));

所以看起来这可能是3.1.4版本中的一个错误。