Castle Windsor不会始终如一地释放瞬态组件

时间:2017-01-17 11:46:08

标签: c# mvvm inversion-of-control castle-windsor ioc-container

我正在创建一个带MVVM模式的WPF应用程序和Castle Windsor作为IoC容器。问题是windsor接缝不一致地释放我的组件。

我有以下部分:

  • 视图的TypedFactory
  • MainView(瞬态)+ MainViewModel(瞬态)
  • ViewA(瞬态)+ ViewModelA(瞬态)
  • ViewB(瞬态)+ ViewModelB(瞬态)
  • DataServiceA(Singleton)
  • DataServiceB(Singleton)

DependencyGraph是:

  • MainView - > MainViewModel - > DataServiceA,DataServiceB
  • ViewA - > ViewModelA - > DataServiceA
  • ViewB - > ViewModelB - > DataServiceB

DataServices用于在ViewModel之间进行通信,因此必须是单例。 MainView主要是在两个视图之间进行切换,从工厂解析一个视图,同时释放另一个视图 ViewModel通过PropertyInjection插入到视图的代码隐藏中。

我订阅了事件Container.Kernel.ComponentCreated和ComponentDestroyed以查看跟踪是否正常工作。

问题是,ViewModelA在ViewA发布时被销毁,但ViewModelB的方式不同。从我的角度来看,两个ViewModel应该被平等对待,因为唯一的区别是依赖。

0 个答案:

没有答案