1
Я прочитал документацию и не могу найти ничего о разрешении типа и в то же время переопределить некоторые его зависимости. Проще всего проиллюстрировать примерПереопределить определенную реализацию при разрешении зависимостей
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
}
Имеет ли смысл? Искал что-то вроде
return Container.Resolve(type, Rule.Override.TypeOf<IServiceA>(a));
большую работу с DryIoc
Edit (2016-05-26) Мой вопрос был missleading. Ниже приведен полный пример кода (для 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);
});
Выглядит выступает. Я вижу, что я задал свой вопрос немного промахиванием, поскольку параметр 'type' является' Type' и не известен во время компиляции ... Любые мысли? – joacar
Проверьте обновление. – dadhi
Извините, не так ли вы редактировали, но Update также должны работать. – dadhi