我有一个WPF视图有一个相应的ViewModel。所有实例都通过统一容器解决。因为我使用棱镜,所以我需要两个独立的视图实例将其添加到视图注册到的两个不同区域。如果我想尝试一个实例添加到这两个区域,我得到一个有没有配置TransientLifetimeManager
InvalidOperationException异常:指定 元素已经是另一个元素的逻辑子 。首先断开它 。
当视图被添加到第二个区域时,因为它已被添加到第一个区域。
这个问题很容易通过使用一个总是返回一个新实例的TransientLifetimeManager来解决,因此这两个区域都会被一个独立实例填充。
但是我们决定在新用户登录时创建一个子容器。每个会话相关的视图和视图模型都使用此子容器进行解析。当用户的会话结束时,处理子容器,以便还处置每个与会话有关的实例。但是使用TransientLifetimeManager时,统一容器不能处理这些实例。
我们需要的是一个总是返回一个新实例但也能够处理这些实例的终生管理器。有没有这样的人生经理?还是有另一种方法来实现我上面描述的?
对于那些阅读答案的人:“使有资格成为GC'ed”并不意味着要求[立即或技术上的]处置“。对于严格的范围/寿命来说,这是一个很大的差异。 – user2864740 2015-03-03 21:47:56