IOC / DI CastleWindsor每次都返回相同的实例

时间:2012-10-14 15:55:42

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

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

到目前为止ProcessEngine模块用于逐个发送Invoices,如同在队列中一样,我的模块完美运行。但是现在ProcessEngine通过在不同的线程中跨越它们发送许多已准备好的发票,每个发票都有自己的线程,因此出现了问题。

我看到的问题是实例是使用Castle Windsor创建的,并且每次都返回相同的对象。这意味着所有线程都具有相同的实例,并且会产生混乱。然后我使用 new 关键字创建了具有一些私有属性的主要类的实例,并且它工作正常。

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

任何帮助都会得到很高的评价。我对Castle Windsor没有多少了解,但我发现它是一种Singleton Pattern,因为它每次使用Castle Windsor返回相同的物体。

1 个答案:

答案 0 :(得分:3)

您需要检查lifestyles

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

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