public static SchemaException SortProvider_NoOperationHandlersConfigured( ISortProvider sortProvider) => new SchemaException( SchemaErrorBuilder.New() .SetMessage( DataResources.SortProvider_NoOperationHandlersConfigured, sortProvider.GetType().FullName ?? sortProvider.GetType().Name) .SetExtension(nameof(sortProvider), sortProvider) .Build());
public static ISchemaError SortProvider_UnableToCreateOperationHandler( ISortProvider sortProvider, Type operationHandler) => SchemaErrorBuilder.New() .SetMessage( DataResources.SortProvider_UnableToCreateOperationHandler, operationHandler.FullName ?? operationHandler.Name, sortProvider.GetType().FullName ?? sortProvider.GetType().Name) .SetExtension(nameof(sortProvider), sortProvider) .SetExtension(nameof(operationHandler), operationHandler) .Build();
protected override void Complete(IConventionContext context) { if (Definition?.Provider is null) { throw SortConvention_NoProviderFound(GetType(), Definition?.Scope); } if (Definition.ProviderInstance is null) { _provider = context.Services.GetOrCreateService <ISortProvider>(Definition.Provider) ?? throw SortConvention_NoProviderFound(GetType(), Definition.Scope); } else { _provider = Definition.ProviderInstance; } _namingConventions = context.DescriptorContext.Naming; _operations = Definition.Operations.ToDictionary( x => x.Id, SortOperation.FromDefinition); foreach (var operation in _operations.Values) { if (!operation.Name.HasValue) { throw SortConvention_OperationIsNotNamed(this, operation); } } _bindings = Definition.Bindings; _defaultBinding = Definition.DefaultBinding; _inputTypeConfigs = Definition.Configurations; _enumTypeConfigs = Definition.EnumConfigurations; _argumentName = Definition.ArgumentName; if (_provider is ISortProviderConvention init) { IReadOnlyList <ISortProviderExtension> extensions = CollectExtensions(context.Services, Definition); init.Initialize(context); MergeExtensions(context, init, extensions); init.Complete(context); } _typeInspector = context.DescriptorContext.TypeInspector; // It is important to always call base to continue the cleanup and the disposal of the // definition base.Complete(context); }
protected override void OnComplete( IConventionContext context, SortConventionDefinition definition) { if (definition.Provider is null) { throw SortConvention_NoProviderFound(GetType(), definition.Scope); } if (definition.ProviderInstance is null) { _provider = context.Services.GetOrCreateService <ISortProvider>(definition.Provider) ?? throw SortConvention_NoProviderFound(GetType(), definition.Scope); } else { _provider = definition.ProviderInstance; } _namingConventions = context.DescriptorContext.Naming; _operations = definition.Operations.ToDictionary( x => x.Id, SortOperation.FromDefinition); foreach (var operation in _operations.Values) { if (!operation.Name.HasValue) { throw SortConvention_OperationIsNotNamed(this, operation); } } _bindings = definition.Bindings; _defaultBinding = definition.DefaultBinding; _inputTypeConfigs = definition.Configurations; _enumTypeConfigs = definition.EnumConfigurations; _argumentName = definition.ArgumentName; if (_provider is ISortProviderConvention init) { init.Initialize(context); } _typeInspector = context.DescriptorContext.TypeInspector; }
public ProductService(ISortProvider sortProvider) { _sortProvider = sortProvider; }
public QuickSortTest(ITestOutputHelper output) { _output = output; _intSortor = new QuickSortProvider <int>(); _doubleSortor = new QuickSortProvider <double>(); }