在瞬时寿命和容器控制的寿命之间切换

时间:2018-07-13 17:57:32

标签: dependency-injection unity-container

我正在使用Unity进行依赖项注入。 Unity将解析的许多对象都具有IMyChildService依赖性。

在我的MainController中,我定期调用一个方法,该方法可解析某些对象并将它们传递到新产生的工作线程中。完成这些解析后,我希望Unity使用IMyChildService对象的相同实例。然后,当MainController再次调用该方法并再次解析时,我希望使用IMyChildService的新单个实例。在为每个新线程解析依赖项时,我有几个Resolve语句。因此,根据我的理解,每个解决方案的生命周期管理器将无法工作,因为我将获得多个实例(我可能错了)。

此外,MainController有一些方法,我希望对IMyChildService的每个解析都产生一个全新的实例。

从本质上讲,我想每次调用RegisterInstance中的方法时都会调用MainController,该方法会产生一个新线程,但是在MainController的某些方法中还具有短暂的生存期(也,我想确保在产生每个线程之后停止使用我注册的IMyChildService实例,以免意外在该线程之外使用该线程的IMyChildService实例。)

我还没有找到一种方法来撤消RegisterInstance以恢复使用瞬态寿命。我所看到的是,每个新的RegisterInstance都将覆盖先前的RegisterInstance。这就解决了我为每个线程使用一个唯一的IMyChildService的问题,但是并不能解决我的问题的瞬时生存期部分。

我想到的最接近的事情是在生成新线程之后立即注册IMyChildService的新实例。这是部分解决方案,因为它可以防止我意外地在线程外重用线程的IMyChildService,但是并不能完全满足我的需求。有办法解决吗?

0 个答案:

没有答案