public static IServiceCollection AsPublicImplementedInterfaces( this AutoRegisterData autoRegisterData, ServiceLifetime lifetime = ServiceLifetime.Transient) { if (autoRegisterData == null) { throw new ArgumentNullException(nameof(autoRegisterData)); } var classTypes = autoRegisterData.TypeFilter == null ? autoRegisterData.TypesToConsider : autoRegisterData.TypesToConsider.Where(autoRegisterData.TypeFilter); foreach (var classType in classTypes) { var interfaces = classType.GetTypeInfo().ImplementedInterfaces .Where(i => i != typeof(IDisposable) && i.IsPublic); foreach (var interInterface in interfaces) { autoRegisterData.Services.Add(new ServiceDescriptor(interInterface, classType, lifetime)); } } return(autoRegisterData.Services); }
public static AutoRegisterData Where(this AutoRegisterData autoRegisterData, Func <Type, bool> predicate) { if (autoRegisterData == null) { throw new ArgumentNullException(nameof(autoRegisterData)); } autoRegisterData.TypeFilter = predicate; return(new AutoRegisterData(autoRegisterData.Services, autoRegisterData.TypesToConsider.Where(predicate))); }