public static IServiceCollection AddScanServices(this IServiceCollection services, Action <ServiceScanOptions> options) { ServiceScanOptions option = new ServiceScanOptions(); option.DescriptorProviderTypes.Add(new DefaultServiceRegisterDescriptorProvider()); options?.Invoke(option); IServiceRegisterDescriptorCollectionProvider provider = new ServiceRegisterDescriptorCollectionProvider(option.DescriptorProviderTypes); ServiceRegisterDescriptorCollection collection = provider.ServiceRegisterDescriptors; foreach (var item in collection.Items) { ServiceRegister.Registe(services, item); } return(services); }
private void UpdateCollection() { var context = new ServiceRegisterDescriptorProviderContext(); for (var i = 0; i < _serviceRegisterDescriptorProviders.Length; i++) { _serviceRegisterDescriptorProviders[i].OnProvidersExecuting(context); } for (var i = _serviceRegisterDescriptorProviders.Length - 1; i >= 0; i--) { _serviceRegisterDescriptorProviders[i].OnProvidersExecuted(context); } _collection = new ServiceRegisterDescriptorCollection( new ReadOnlyCollection <ServiceRegisterDescriptor>(context.Results)); }