public override PipelineResult Execute(Type requestedType, PipelineResult value) { if (value != null && value.Result != null) { return(value); } var result = new PipelineResult(); var type = requestedType; if (serviceLocator.HasTypeRegistered(type) || type.IsGenericType) { result.Name = value == null ? null : value.Name; result.MappedFrom = requestedType; result.MappedTo = type; var items = store.Get <IResolutionStore>().Items; if (result.Name == null) { result.Result = serviceLocator.GetInstance(type, items.OfType <ConstructorParameter, IResolutionArgument>()); } else { result.Result = serviceLocator.GetInstance(type, result.Name, items.OfType <ConstructorParameter, IResolutionArgument>()); } result = pipeline.Execute(result); return(result); } return(null); }
protected override Func <PipelineResult> Invoker(Type type, PipelineResult value) { return(() => { if (value != null && value.Result != null) { return value; } var result = new PipelineResult(); IList <IRegistration> conditionalCases = registrationStore.GetRegistrationsForType(type); if (conditionalCases == null) { return null; } for (int i = 0; i < conditionalCases.Count; i++) { var registration = conditionalCases[i]; if (registration.IsValid(serviceLocator, store)) { var mappedToType = registration.GetMappedToType(); if (TypeRequested != null) { TypeRequested(mappedToType); } result.Name = registration is INamedRegistration ? ((INamedRegistration)registration).Key : null; result.MappedTo = mappedToType; result.MappedFrom = registration.GetMappedFromType(); result.Result = Resolve(registration); if (result.Result != null && TypeResolved != null) { TypeResolved(type); } if (result.Result != null) { result = pipeline.Execute(result); } return result; } } return null; }); }
public virtual object ResolveWith(IInstanceResolver locator, IServiceLocatorStore context, PostResolutionPipeline pipeline) { object instance = null; instance = GetActivationStrategy().Resolve(locator, context); if(pipeline != null) { var result = GetResult(instance); pipeline.Execute(result); } return instance; }
protected override Func <PipelineResult> Invoker(Type type, PipelineResult value) { return(() => { if (value != null && value.Result != null) { return value; } var result = new PipelineResult(); var registrations = registrationStore.GetRegistrationsForType(type); if (registrations == null) { return null; } var mappedToType = registrations[0].GetMappedToType(); if (TypeRequested != null) { TypeRequested(mappedToType); } result.Name = registrations[0] is INamedRegistration ? ((INamedRegistration)registrations[0]).Key : null; result.MappedTo = mappedToType; result.MappedFrom = registrations[0].GetMappedFromType(); result.Result = Resolve(registrations[0]); if (result.Result != null) { result = pipeline.Execute(result); } if (result.Result != null && TypeResolved != null) { TypeResolved(type); } return result; }); }