public Configuration( ValueSerializerCollection valueSerializers, ResultParserCollection resultParsers, IOperationFormatter operationFormatter, IReadOnlyCollection <Delegate> operationPipelines) { ValueSerializers = valueSerializers; ResultParsers = resultParsers; OperationFormatter = operationFormatter; OperationPipelines = operationPipelines; }
private Configuration CreateConfiguration(string clientName) { ClientOptionsModifiers options = _optionsMonitor.Get(clientName); if (options.ResultParsers.Count == 0) { throw new InvalidOperationException( $"The specified client `{clientName}` has no result parsers configured."); } if (options.OperationFormatter is null) { throw new InvalidOperationException( $"The specified client `{clientName}` has no operations formatter configured."); } Dictionary <string, IValueSerializer> serializers = ValueSerializers.All.ToDictionary(t => t.Name); foreach (ConfigureValueSerializers configure in options.ValueSerializers) { configure(serializers); } var serializerCollection = new ValueSerializerCollection(serializers); var parsers = new Dictionary <Type, IResultParser>(); foreach (ConfigureResultParsers configure in options.ResultParsers) { configure(serializerCollection, parsers); } var parserCollection = new ResultParserCollection(parsers); IOperationFormatter formatter = options.OperationFormatter(serializerCollection); var pipelines = new List <Delegate>(); foreach (ConfigureOperationPipeline configure in options.OperationPipelines) { configure(pipelines); } return(new Configuration( serializerCollection, parserCollection, formatter, pipelines)); }