私はMVVMとPRISMを使用しています。このプロジェクトでは、IFoo と呼ばれる共通のインターフェイスがあり、他のモジュールはこのインターフェイスを実装して登録する必要があります。
// Common module
public interface IFoo { }
// Module1 module
public class Foo1 : IFoo { }
次に、module1 を初期化するときに、型を登録してナビゲートします。
_container.RegisterType<IFoo, Foo1>(new ContainerControlledLifetimeManager());
_container.RegisterType<Object, View1>("View1");
var module = new Uri("View1", UriKind.Relative);
_regionManager.RequestNavigate("MainRegion", module);
View1 コンストラクターには viewModel が含まれており、このビュー モデルにはコンストラクターがあります。
public ViewModel1(IFoo foo, IEventAggregator eventAggregator, IRegionManager regionManager)
{
...
}
ここまでは、大丈夫です。しかし後で、外部モジュールから Foo1 を取得する必要があります。そこで、別のレジストリを Foo1 のマッピング名に設定しました。
_container.RegisterType<IFoo, Foo1>(new ContainerControlledLifetimeManager());
_container.RegisterType<IFoo, Foo1>("foo1", new ContainerControlledLifetimeManager());
そうです、それは私にとってはうまくいきますが、2 つのインスタンスを分離するという考えは好きではありません。1つだけ持っていて、同じインスタンスにアクセスする必要があります。
このシナリオを修正する方法はありますか? 前もって感謝します。
とにかく、私の問題を表すデモが含まれている Zip を添付します。 http://www.mediafire.com/?feod8x0b952457e