私はMVVMとPRISMを使用しています。このプロジェクトでは、私はIFooと呼ばれる共通のインターフェースを持っており、他のモジュールはこのインターフェースを実装して登録する必要があります。PRISM:MVVMを使用して、コンストラクタオブジェクトを解決または注入する方法は?
// 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());
そして右が、それは私のために働いていますが、私は分離された二つのインスタンスを持っているという考えが好きではありません。私はちょうど1つしか持っていなくても、同じインスタンスにアクセスする必要があります。
このシナリオを修正する方法はありますか? ありがとうございます。
とにかく、問題のあるデモを含むZipを添付します。 http://www.mediafire.com/?feod8x0b952457e