public NinjectHandlerSource(IKernel kernel, ITypeVerbExtractor verbExtractor) { Assert.ArgumentNotNull(kernel, nameof(kernel)); _kernel = kernel; _verbExtractor = verbExtractor ?? TypeVerbExtractor.DefaultInstance; _nameMap = SetupNameMapping(); }
public StructureMapHandlerSource(IServiceProvider serviceProvider, ITypeVerbExtractor verbExtractor) { Assert.ArgumentNotNull(serviceProvider, nameof(serviceProvider)); _container = (serviceProvider as StructureMapServiceProvider)?.Container; if (_container == null) { throw new ArgumentException("Expected StructureMap Container", nameof(serviceProvider)); } _verbExtractor = verbExtractor ?? TypeVerbExtractor.DefaultInstance; _nameMap = SetupNameMapping(); }
/// <summary> /// Tell the HandlerSetup to use Ninject to scan for and resolve handler types in your solution. /// </summary> /// <param name="handlers"></param> /// <param name="kernel"></param> /// <param name="verbExtractor"></param> /// <returns></returns> public static IHandlerSetup UseNinjectHandlerSource(this IHandlerSetup handlers, IKernel kernel, ITypeVerbExtractor verbExtractor = null) { Assert.ArgumentNotNull(handlers, nameof(handlers)); Assert.ArgumentNotNull(kernel, nameof(kernel)); var source = new NinjectHandlerSource(kernel, verbExtractor); return(handlers.AddSource(source)); }
private IReadOnlyDictionary <string, VerbInfo> SetupVerbMapping(IServiceCollection services, ITypeVerbExtractor verbExtractor) { var handlerRegistrations = services.Where(sd => typeof(IHandlerBase).IsAssignableFrom(sd.ServiceType)).ToList(); var instances = handlerRegistrations .Where(sd => sd.ImplementationInstance != null) .SelectMany(sd => verbExtractor .GetVerbs(sd.ImplementationInstance.GetType()) .Select(verb => new VerbInfo(verb, sd.ImplementationInstance.GetType())) ) .ToList(); var types = handlerRegistrations .Where(sd => sd.ImplementationType != null) .SelectMany(sd => verbExtractor .GetVerbs(sd.ImplementationType) .Select(verb => new VerbInfo(verb, sd.ImplementationType)) ) .ToList(); var factories = handlerRegistrations .Where(sd => sd.ImplementationFactory != null && sd.ServiceType.IsClass && !sd.ServiceType.IsAbstract) .SelectMany(sd => verbExtractor .GetVerbs(sd.ServiceType) .Select(verb => new VerbInfo(verb, sd.ServiceType)) ) .ToList(); return(instances .Concat(types) .Concat(factories) .ToDictionaryUnique(vi => vi.Verb, vi => vi)); }
public MicrosoftRegisteredHandlerSource(IServiceCollection services, Func <IServiceProvider> getProvider, ITypeVerbExtractor verbExtractor) { _getProvider = getProvider; _verbs = SetupVerbMapping(services, verbExtractor); }
public IHandlerSetup UseHandlerTypes(IEnumerable <Type> commandTypes, TypeInstanceResolver resolver = null, ITypeVerbExtractor verbExtractor = null) { Assert.ArgumentNotNull(commandTypes, nameof(commandTypes)); var source = new TypeListConstructSource(commandTypes, resolver ?? _defaultResolver, verbExtractor); return(AddSource(source)); }
public UnityHandlerSource(IUnityContainer container, ITypeVerbExtractor verbExtractor) { _container = container ?? throw new ArgumentNullException(nameof(container)); _verbExtractor = verbExtractor ?? throw new ArgumentNullException(nameof(verbExtractor)); _nameMap = new Lazy <IReadOnlyDictionary <string, Type> >(SetupNameMapping); }
public TypeListConstructSource(IEnumerable <Type> commandTypes, TypeInstanceResolver resolver, ITypeVerbExtractor verbExtractor) { _resolver = resolver ?? DefaultResolver; verbExtractor ??= TypeVerbExtractor.DefaultInstance; _commands = commandTypes .OrEmptyIfNull() .SelectMany(commandType => verbExtractor.GetVerbs(commandType) .Select(verb => (verb, commandType)) ) .ToDictionaryUnique(); }
public LamarHandlerSource(IServiceProvider provider, ITypeVerbExtractor verbExtractor) { _container = provider as IContainer ?? throw new ArgumentException("Expected a Lamar Container", nameof(provider)); _verbExtractor = verbExtractor ?? TypeVerbExtractor.DefaultInstance; _nameMap = new Lazy <IReadOnlyDictionary <string, Type> >(SetupNameMapping); }