Ich habe in die Dokumentation gelesen und kann nichts über die Auflösung eines Typs finden und gleichzeitig einige seiner Abhängigkeiten außer Kraft setzen. Am einfachsten mit einem Beispiel zu veranschaulichenBestimmte Implementierung beim Auflösen einer Abhängigkeit überschreiben
public class A
{
public A(IServiceA a, IServiceB b) {}
}
// Resolve scenarion
type =>
{
// type is A
var a = Container.Resolve<IServiceA>();
a.SomeProperty = "magic";
return Container.Resolve(type) // TODO: How to resolve A using a
}
Macht es Sinn? War auf der Suche nach so etwas wie
return Container.Resolve(type, Rule.Override.TypeOf<IServiceA>(a));
Great job mit DryIoc
Edit (2016.05.26) Meine Frage wurde missleading. Im Folgenden finden Sie komplette Codebeispiel (für prism)
ViewModelLocationProvider.SetDefaultViewModelFactory((view, type) =>
{
var page = view as Page;
if (page != null)
{
var navigationService = Container.Resolve<INavigationService>();
((IPageAware)navigationService).Page = page;
var @override = Container.Resolve<Func<INavigationService, type>>(); // How to do this
return @override(navigationService);
}
return Container.Resolve(type);
});
Sieht vielversprechend aus. Ich sehe, dass ich meine Frage ein wenig irreführend angegeben habe, da der Parameter 'type'' Type' ist und zur Kompilierzeit nicht bekannt ist ... Irgendwelche Gedanken? – joacar
Überprüfen Sie das Update. – dadhi
Sorry, habe deine Bearbeitung nicht gemacht, aber das Update sollte auch dafür funktionieren. – dadhi