IServiceRegistration GetFakeContainerRegistration(ServiceResolvingContainerProxy instance, string name) { return(new FactoryRegistration(new Func <IResolvesServices>(() => instance)) { ServiceType = typeof(IResolvesServices), Name = name, Cacheable = false, DisposeWithContainer = false, }); }
/// <summary> /// Resolves the given resolution request and returns the result. /// </summary> /// <param name="request">Request.</param> public override ResolutionResult Resolve(ResolutionRequest request) { if (request.ServiceType != typeof(IResolvesServices) || request.ResolutionPath.IsEmpty) { return(ProxiedResolver.Resolve(request)); } var containerRequest = new ResolutionRequest(typeof(IContainer), request.Name, request.ResolutionPath); var result = ProxiedResolver.Resolve(containerRequest); if (!result.IsSuccess) { return(result); } var container = (IContainer)result.ResolvedObject; var dynamicContainer = new ServiceResolvingContainerProxy(container, request.ResolutionPath); var registration = GetFakeContainerRegistration(dynamicContainer, request.Name); return(ResolutionResult.Success(request.ResolutionPath, dynamicContainer)); }