public override void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { var mappedFromType = registration.GetMappedFromType(); var mappedToType = registration.GetMappedToType(); if (mappedFromType != mappedToType) { adapter.RegisterFactoryMethod(mappedFromType, () => pipeline.Execute(mappedFromType)); RegisterLazy(adapter, mappedFromType, pipeline); adapter.Register(mappedToType, mappedToType); RegisterContextual(adapter, mappedToType); } else { var serviceLocator = adapter.GetInstance<IServiceLocator>(); adapter.RegisterFactoryMethod(mappedToType, () => { var instance = serviceLocator.GetInstance(mappedToType, "default." + mappedToType, new IResolutionArgument[0]); return instance; }); serviceLocator.Register(new NamedRegistration(mappedToType, mappedToType, "default." + mappedToType)); } RegisterLazy(adapter, mappedToType, pipeline); RegisterTypeResolver(adapter, mappedFromType); RegisterContextual(adapter, mappedFromType); }
public void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { if (registration is ConstructorRegistration) { var constructorRegistration = registration as ConstructorRegistration; store.Get<IInjectionOverrideStore>().Add(constructorRegistration.Arguments); } }
public override void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { var namedRegistration = (INamedRegistration)registration; var mappedTo = registration.GetMappedTo(); adapter.RegisterInstanceWithName(registration.GetMappedToType(), mappedTo, namedRegistration.Key); adapter.RegisterInstanceWithName(registration.GetMappedFromType(), mappedTo, namedRegistration.Key); }
protected void RegisterLazy(IServiceLocatorAdapter adapter, Type type, ResolutionPipeline pipeline) { Type lazyLoader = typeof (Func<>).MakeGenericType(type); Expression<Func<object>> func = () => pipeline.Execute(type); var lambda = Expression.Lambda(lazyLoader, Expression.Convert(Expression.Invoke(func), type)).Compile(); adapter.RegisterFactoryMethod(lazyLoader, () => lambda); }
public override void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { var mappedFromType = registration.GetMappedFromType(); var mappedToType = registration.GetMappedToType(); if (mappedFromType != mappedToType) { adapter.RegisterFactoryMethod(mappedFromType, () => pipeline.Execute(mappedFromType)); RegisterLazy(adapter, mappedFromType, pipeline); } adapter.RegisterInstance(mappedToType, registration.GetMappedTo()); RegisterLazy(adapter, mappedToType, pipeline); RegisterTypeResolver(adapter, mappedFromType); }
public override void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { var mappedFromType = registration.GetMappedFromType(); var mappedToType = registration.GetMappedToType(); adapter.RegisterFactoryMethod(mappedFromType, () => pipeline.Execute(mappedFromType)); RegisterLazy(adapter, mappedFromType, pipeline); RegisterContextual(adapter, mappedFromType); if (!mappedToType.IsInterface) { adapter.Register(mappedToType, mappedToType); RegisterLazy(adapter, mappedToType, pipeline); RegisterContextual(adapter, mappedToType); } }
public void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { store.Get<IAwarenessStore>().Add(registration.GetMappedTo()); }
public void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { }
public void Register(IServiceLocatorAdapter adapter, IServiceLocatorStore store, IRegistration registration, ResolutionPipeline pipeline) { adapter.Register(registration.GetMappedFromType(), registration.GetMappedToType()); }