gpt4 book ai didi

c# - 使用 StructureMap 注入(inject)相同的实例

转载 作者:太空狗 更新时间:2023-10-30 01:25:40 25 4
gpt4 key购买 nike

我有一个接口(interface) IConnection,由 TcpConnection 实现。此外,两个类接受 IConnection 作为参数,我想为此使用相同的 TcpConnection 实例。

问题是它似乎不起作用。我尝试过的每一种方法都不止一次地创建了 TcpConnection。这是我正在使用的 Registry 子类:

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 声明为 Singleton(“For<>().Singleton()”),但这也无济于事。我正在使用 StructureMap 2.6.1。

有什么想法吗?

最佳答案

For<IConnection>().Singleton().Add<TcpConnection>().Named("Connection");
For<IFoo>().Add<Foo>().Ctor<IConnection>().Is(i=>i.GetInstance<IConnection>("Connection"));
For<IBar>().Add<Bar>().Ctor<IConnection>().Is(i=>i.GetInstance<IConnection>("Connection"));

当我使用上面的代码时,我在 Foo 和 Bar 中有相同的连接实例。我也厌倦了几个命名连接。 Foo 和 Bar 仍然得到他们想要的连接。

关于c# - 使用 StructureMap 注入(inject)相同的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com