c# - IOC/DI CaSTLeWindsor 每次都返回相同的实例

标签 c# .net dependency-injection inversion-of-control castle-windsor

该项目正在使用温莎城堡实现 IOC/DI。项目中有很多模块。有一个名为 ProcessEngine 的模块,它将 Invoices 发送到我的自动流程模块,涉及 7 个步骤。

到目前为止,ProcessEngine 模块使用在队列中一张一张地发送Invoices,并且我的模块工作得很好。但现在 ProcessEngine 发送了许多已准备好的发票,这些发票通过跨越不同的线程来发送,每个发票都有自己的线程,因此问题出现了。

我看到的问题是实例是使用 CaSTLe Windsor 创建的,并且每次都返回相同的对象。这意味着所有线程都具有相同的实例,这会造成困惑。然后我使用 new 关键字创建了具有一些私有(private)属性的主要类的实例,并且效果很好。

有什么方法可以限制 CaSTLe Windsor 容器每次为我的模块的某些类返回新实例吗? 这是该项目的架构指南,对象必须使用 CaSTLe Windsor 实例化,而不是使用 new 关键字。有什么解决办法吗?

任何帮助都将受到高度赞赏。我对温莎城堡了解不多,但我观察到它是一种单例模式,因为每次使用温莎城堡都会返回相同的对象。

最佳答案

您需要检查lifestyles .

默认行为是单例,这意味着当您请求解析时它确实会返回相同的实例。

您可以使用 PerThread 或 Transient 生活方式。

关于c# - IOC/DI CaSTLeWindsor 每次都返回相同的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883900/

相关文章:

c# - 从自定义 ILogger 访问 LoggerFilterOptions

c# - 钴芯组件

.net - 为什么 PostSharp 会跳过我在构建服务器上的一个项目?

java - 即使我在 Spring 类中声明该字段,为什么 @Autowired 为 null?

c# - O(1) 哈希查找?

c# - WPF RightClick MouseBinding 发布?

.Net xsd.exe 工具不会生成所有类型

c# - 具有状态/错误代码结果的事件目录身份验证

c# - 在基类中拥有所有依赖项是一种好习惯吗?

oop - 什么是依赖注入(inject)的好比喻?