public static IImplementationTypeSelector RegisterHandlers(this IImplementationTypeSelector selector, Type type) { return(selector.AddClasses(c => c.AssignableTo(type)) .UsingRegistrationStrategy(RegistrationStrategy.Append) .AsImplementedInterfaces() .WithScopedLifetime()); }
public static IImplementationTypeSelector AddAttributes(this IImplementationTypeSelector implementationTypeSelector) { return (implementationTypeSelector .AddClasses() .UsingAttributes()); }
private static void AddTypes(this IImplementationTypeSelector selector) { selector .AddClasses(classes => classes.AssignableTo(typeof(IEventHandler <>))) .AsImplementedInterfaces() .WithTransientLifetime(); }
public static IImplementationTypeSelector InjectableAttributes(this IImplementationTypeSelector selector) { Enum.GetValues(typeof(ServiceLifetime)) .Cast <ServiceLifetime>() .ForEach(item => selector = selector.InjectableAttribute(item)); return(selector); }
public static IImplementationTypeSelector AddSingletonInterfaces(this IImplementationTypeSelector implementationTypeSelector) { return (implementationTypeSelector .AddClasses(classes => classes.AssignableTo <ISingletonService>()) .AsImplementedInterfaces() .WithSingletonLifetime()); }
public static IImplementationTypeSelector AddTransientInterfaces(this IImplementationTypeSelector implementationTypeSelector) { return (implementationTypeSelector .AddClasses(classes => classes.AssignableTo <ITransientService>()) .AsImplementedInterfaces() .WithTransientLifetime()); }
private static void AddLuigiTypes(this IImplementationTypeSelector selector) { selector .AddClasses(classes => classes.AssignableTo(typeof(IQueryPipeline <,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IQueryPipe <,>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IQueryPipeline <, ,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IQueryPipe <, ,>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IQueryHandler <,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(ICommandPipeline <,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(ICommandPipe <,>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(ICommandPipeline <>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(ICommandPipe <>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler <>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IEventPipeline <,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IEventPipe <,>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IEventPipeline <>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IEventPipe <>))) .AsSelf() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo(typeof(IEventHandler <>))) .AsImplementedInterfaces() .WithTransientLifetime(); }
internal static IImplementationTypeSelector RegisterForLifetime( this IImplementationTypeSelector typeSelector, ServiceLifetime lifetime) { return(typeSelector .AddClasses(classes => classes.Filter(lifetime)) .AsSelf() .AsImplementedInterfaces() .WithLifetime(lifetime)); }
public static IImplementationTypeSelector InjectableAttributes(this IImplementationTypeSelector selector) { var lifeTimes = Enum.GetValues(typeof(ServiceLifetime)).Cast <ServiceLifetime>(); foreach (var item in lifeTimes) { selector = selector.InjectableAttribute(item); } return(selector); }
private static void ScanModule(this IServiceCollection services, Func <ITypeSourceSelector, IImplementationTypeSelector> typeSelector) { //services.Scan(scan => typeSelector(scan).AddTransientInterfaces()); //services.Scan(scan => typeSelector(scan).AddScopedInterfaces()); //services.Scan(scan => typeSelector(scan).AddSingletonInterfaces()); //services.Scan(scan => typeSelector(scan).AddAttributes()); services.Scan(scan => { IImplementationTypeSelector selector = typeSelector(scan); selector.AddTransientInterfaces(); selector.AddScopedInterfaces(); selector.AddSingletonInterfaces(); selector.AddAttributes(); }); }
private static IImplementationTypeSelector AddClassesFromInterfaces(this IImplementationTypeSelector selector) { //singleton selector.AddClasses(classes => classes.AssignableTo <ISingletonLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsMatchingInterface() .WithSingletonLifetime() .AddClasses(classes => classes.AssignableTo <ISelfSingletonLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsSelf() .WithSingletonLifetime() //transient .AddClasses(classes => classes.AssignableTo <ITransientLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsMatchingInterface() .WithTransientLifetime() .AddClasses(classes => classes.AssignableTo <ISelfTransientLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsSelf() .WithTransientLifetime() //scoped .AddClasses(classes => classes.AssignableTo <IScopedLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsMatchingInterface() .WithScopedLifetime() .AddClasses(classes => classes.AssignableTo <ISelfScopedLifetime>(), true) .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsSelf() .WithScopedLifetime(); return(selector); }
/// <summary> /// Automatic validators discovery and automatic validation of commands/queries into the MediatR pipeline /// /// Shortcut that calls <see cref="AddValidators"/> and <see cref="AddValidationBehaviors"/>. /// </summary> /// <param name="selector">The selector used to scan for classes.</param> /// <returns>The selector.</returns> public static IImplementationTypeSelector AddValidatorsAndBehaviors(this IImplementationTypeSelector selector) { return(selector .AddValidators() .AddValidationBehaviors()); }
/// <summary> /// Scans and registers all <see cref="IValidator{T}"/>. /// </summary> /// <param name="selector">The selector used to scan for classes.</param> /// <returns>The selector.</returns> public static IImplementationTypeSelector AddValidators(this IImplementationTypeSelector selector) { return(selector.AddClasses(classes => classes.AssignableTo(typeof(IValidator <>))) .AsImplementedInterfaces() .WithScopedLifetime()); }
/// <summary> /// Registers all <see cref="ValidationBehavior{TRequest, TResponse}"/> /// that uses <see cref="IValidator{TRequest}"/> /// as MediatR <see cref="IPipelineBehavior{TRequest, TResponse}"/>. /// /// Automatic command and query validation should work as long there is a <see cref="IValidator{TRequest}"/> for the handler. /// </summary> /// <param name="selector">The selector used to scan for classes.</param> /// <returns>The selector.</returns> public static IImplementationTypeSelector AddValidationBehaviors(this IImplementationTypeSelector selector) { return(selector.AddClasses(classes => classes.AssignableTo(typeof(ValidationBehavior <,>))) .As(typeof(IPipelineBehavior <,>)) .WithTransientLifetime()); }
public static IImplementationTypeSelector InjectableAttribute(this IImplementationTypeSelector selector, ServiceLifetime lifeTime) { return(selector.AddClasses(c => c.WithAttribute <InjectableAttribute>(i => i.Lifetime == lifeTime)) .AsImplementedInterfaces() .WithLifetime(lifeTime)); }
public ServiceTypeSelector(IImplementationTypeSelector inner, IEnumerable <Type> types) { Inner = inner; Types = types; }
public ServiceTypeSelector(IImplementationTypeSelector implementationTypeSelector, IEnumerable <Type> types) { ImplementationTypeSelector = implementationTypeSelector; Types = types; Selectors = new List <ISelector>(); }