开发者

Using StructureMap, when a default concrete type is defined in one registry, can it be redefined in another registry?

In the project I'm working on I have a StructureMap registry for the main web project and another registry for my integration tests. During some of the tests I wire up the web project's registry, so that I can get objects out of the container for testing.

In one case I want to be able to replace a defa开发者_开发技巧ult concrete type from the web registry with one in the test registry.

Is this possible?

How do you do it?


In a similar situation I created a NestedContainer (Container.GetNestedContainer()) and overwrote the type there. I then use the nested container to resolve the type.

That keeps the original configuration intact but allows for such overriding.


Yes you can, the container will serve up which ever type is last defined (according to my tests). I theorize (but I am unsure) that my mistake was that I called the IInitializationExpression.Scan mechanism after I registered some type and it got reregistered back to it's original setting.


Have you tried the .With() when you use GetInstance()?

Otherwise, you also use Container.Inject().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜