解决依赖项时覆盖某些实现

Override certain implementation when resolving a dependency

我已阅读文档,但找不到任何有关解析类型并同时覆盖其某些依赖项的内容。用例子最容易说明

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

编辑 (2016-05-26) 我的问题是误导。下面是完整的代码示例(针对 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);
});

解析为Func with parameter你要传:

var factory = Container.Resolve<Func<IServiceA, A>>();
var result = factory(a);

更新:

给定要解析的运行时类型:

type => 
{
    // type is A
    var a = Container.Resolve<IServiceA>();
    a.SomeProperty = "magic";

    // Asking for required service type, but wrapped in Func returning object
    var factory = Container.Resolve<Func<IServiceA, object>>(requiredServiceType: type);
    return factory(a);
}