Reputation: 97707
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 default concrete type from the web registry with one in the test registry.
Is this possible?
How do you do it?
Upvotes: 0
Views: 483
Reputation: 97707
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.
Upvotes: 1
Reputation: 48474
Have you tried the .With()
when you use GetInstance()
?
Otherwise, you also use Container.Inject()
.
Upvotes: 0
Reputation: 22859
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.
Upvotes: 1