Using StructureMap, when a default concrete type i

2019-08-26 22:40发布

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?

3条回答
来,给爷笑一个
2楼-- · 2019-08-26 22:54

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.

查看更多
够拽才男人
3楼-- · 2019-08-26 22:58

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.

查看更多
倾城 Initia
4楼-- · 2019-08-26 23:16

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

Otherwise, you also use Container.Inject().

查看更多
登录 后发表回答