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()
.
精彩评论