我有一个接口IConnection,由TcpConnection实现。另外,两个类接受IConnection作为参数,并且我想为此使用同一个TcpConnection实例。使用StructureMap输入相同的实例
问题是它似乎没有工作。对于我尝试的每种方法,TcpConnection都创建了多次。下面是我使用的注册子类:
public class InstanceRegistry : Registry
{
public InstanceRegistry()
{
var connection =
For<IConnection>.Add<TcpConnection>.
Named("Connection"); // ...and additional configuration
For<IFoo>.Add<Foo>.
// Ctor<IConnection>.Is(connection); // Did not work
Ctor<IConnection>.Is(i => i.GetInstance<IConnection>("Connection"));
For<IBar>.Add<Bar>.
// Ctor<IConnection>.Is(connection); // Did not work
Ctor<IConnection>.Is(i => i.GetInstance<IConnection>("Connection"));
}
}
我甚至尝试宣告IConnection为辛格尔顿(“对于<>()辛格尔顿()。”),但没有帮助。我正在使用StructureMap 2.6.1。
任何想法?
请参见结束我的帖子,我已经尝试过使用辛格尔顿。我不能在我的情况下使用“使用<>()”,因为其他对象需要其他连接。 – kshahar
编辑我的帖子的例子我试过 – Bassetassen
谢谢,我想发布适用于我的解决方案(基本上相同,只需用HybridHttpOrThreadLocalScoped替换Singleton),但您的解决方案也适用。 – kshahar