我有StructureMap设置来传递依赖关系作为处理不同电子邮件协议的接口。然而,实现继承自'TcpClient'。如果出现错误或断开连接,除非创建了新的TcpClient,否则无法重新连接,因此需要使用新对象刷新传入的依赖项。
如何让StructureMap重新创建已经传入的依赖项? 在服务构造函数中,需要使用新对象刷新其中2个协议接口。 如果StructureMap能够在不对ObjectFactory进行任何调用的情况下实现这一点,那将是很好的,因为依赖关系已经在ServiceRegistry类中连接起来了。
答案 0 :(得分:2)
听起来像一个习惯的生活方式可能会成功。这是通过实现ILifecycle
接口完成的。
答案 1 :(得分:1)
您可以使消费类依赖于Func<TcpClient>
而不是TcpClient
。将func存储在实例变量中,然后在需要新实例时调用func。