해당 ViewModel이있는 WPF보기가 있습니다. 모든 인스턴스는 단일 컨테이너를 통해 확인됩니다. 프리즘을 사용하기 때문에보기가 등록 된 두 개의 다른 영역에 두 개의 독립 인스턴스를 추가해야합니다. 나는 두 지역에 하나 개의 인스턴스를 추가하려고 싶다면 나는TransientLifetimeManager 삭제
InvalidOperationException이 발생합니다 : 지정된 요소가 이미 다른 요소의 논리적 아이 입니다. 먼저 의 연결을 끊으십시오.
보기가 이미 첫 번째 영역에 추가 되었기 때문에 두 번째 영역에 추가되는 경우.
이 문제는 두 인스턴스가 모두 독립 인스턴스로 채워지도록 항상 새 인스턴스를 반환하는 TransientLifetimeManager를 사용하면 쉽게 해결할 수 있습니다.
하지만 새 사용자가 로그온 할 때 하위 컨테이너를 만들기로했습니다. 모든 세션 관련 뷰 및 뷰 모델은이 하위 컨테이너를 사용하여 해결됩니다. 사용자 세션이 끝나면 모든 세션 관련 인스턴스가 삭제되도록 하위 컨테이너가 배치됩니다. 그러나 TransientLifetimeManager를 사용하면 단일 컨테이너가 해당 인스턴스를 처리 할 수 없습니다.
우리는 항상 새로운 인스턴스를 반환하지만 그 인스턴스를 처리 할 수있는 평생 매니저가 필요합니다. 평생 매니저가 있습니까? 아니면 위에 설명한 내용을 달성 할 수있는 또 다른 방법이 있습니까?
답변을 읽는 사람들에게 : "GCeded 될 자격이 있음"은 "즉시 또는 기술적으로 전화를 겁니다"라고 암시하지 않습니다. 엄격한 스코프/수명의 경우 이것은 큰 차이입니다. – user2864740