public static ICoreBuilder AddAutoRegistrationMediators(this ICoreBuilder builder, IEnumerable <Assembly> assemblies) { builder.NotNull(nameof(builder)); builder.Services.ConnectImplementationsToTypesClosing(assemblies, typeof(IRequestHandler <,>), false); builder.Services.ConnectImplementationsToTypesClosing(assemblies, typeof(INotificationHandler <>), true); builder.Services.ConnectImplementationsToTypesClosing(assemblies, typeof(IRequestPreProcessor <>), true); builder.Services.ConnectImplementationsToTypesClosing(assemblies, typeof(IRequestPostProcessor <,>), true); var multiOpenInterfaces = new[] { typeof(INotificationHandler <>), typeof(IRequestPreProcessor <>), typeof(IRequestPostProcessor <,>) }; foreach (var multiOpenInterface in multiOpenInterfaces) { assemblies.InvokeTypes(type => { builder.Services.AddTransient(multiOpenInterface, type); }, types => types .Where(type => Enumerable.Any(type.FindInterfacesThatClose(multiOpenInterface))) .Where(type => type.IsConcreteType() && type.IsOpenGenericType())); } return(builder); }
public void InjectTest() { _fieldBuilder.NotNull(nameof(_fieldBuilder)); PropertyBuilder.NotNull(nameof(PropertyBuilder)); }