Ich verwende MVVM und PRISM. Im Projekt habe ich eine gemeinsame Schnittstelle namens IFoo und andere Module sollten diese Schnittstelle implementieren und registrieren.PRISM: Verwenden MVVM, wie Sie in einem Konstruktor Objekte auflösen oder injizieren?
Wenn ich dann das Modul1 initialisiere, registriere ich meinen Typ und navigiere.
_container.RegisterType<IFoo, Foo1>(new ContainerControlledLifetimeManager());
_container.RegisterType<Object, View1>("View1");
var module = new Uri("View1", UriKind.Relative);
_regionManager.RequestNavigate("MainRegion", module);
Ansicht1 Konstruktor enthält Ansichtsmodell, wobei diese Ansicht Modell hat in seinem Konstruktor:
public ViewModel1(IFoo foo, IEventAggregator eventAggregator, IRegionManager regionManager)
{
...
}
Bis dies in Ordnung ist. Aber später muss ich das Foo1 von externen Modulen bekommen. Also, habe ich eine andere Registry-Mapping Namen für Foo1:
_container.RegisterType<IFoo, Foo1>(new ContainerControlledLifetimeManager());
_container.RegisterType<IFoo, Foo1>("foo1", new ContainerControlledLifetimeManager());
Und richtig, es ist für mich zu arbeiten, aber ich weiß nicht, wie die Idee, zwei Instanzen zu haben, getrennt. Ich muss nur einen haben und auf dieselbe Instanz zugreifen.
Gibt es eine Möglichkeit, dieses Szenario zu beheben? Vielen Dank im Voraus.
Wie auch immer, ich füge eine Zip, wo eine Demo enthält, die mein Problem darstellt. http://www.mediafire.com/?feod8x0b952457e