/// <summary> /// Creates new <see cref="PotentiallyAsyncWriterAndObservable{TValue}"/> which transforms the values given to <see cref="PotentiallyAsyncWriter{TValue}.TryWriteAsync"/> to values understood by underlying <see cref="PotentiallyAsyncWriterLogic{TValue, TSink}"/>. /// </summary> /// <param name="writer">The underlying <see cref="PotentiallyAsyncWriterLogic{TValue, TSink}"/> logic.</param> /// <param name="sink">The sink to write to.</param> /// <param name="transformer">The callback which should transform values of <typeparamref name="TValue"/> into values of type <typeparamref name="TTransformed"/>, understood by <paramref name="writer"/>.</param> /// <typeparam name="TValue">Type of values to serialize.</typeparam> /// <typeparam name="TSink">Type of sink to serialize to.</typeparam> /// <typeparam name="TTransformed">The type of values understood by <paramref name="writer"/>.</typeparam> public static PotentiallyAsyncWriterAndObservable <TValue> CreateTransformableWriter <TValue, TSink, TTransformed>( PotentiallyAsyncWriterLogic <TTransformed, TSink> writer, TSink sink, Func <TValue, TTransformed> transformer ) { return(new TransformablePotentiallyAsyncWriter <TValue, TSink, TTransformed>(writer, sink, transformer)); }
internal TransformablePotentiallyAsyncWriter( PotentiallyAsyncWriterLogic <TTransformed, TSink> writer, TSink sink, Func <TValue, TTransformed> transformer ) { this._writer = ArgumentValidator.ValidateNotNull(nameof(writer), writer); this._sink = sink; this._transformer = ArgumentValidator.ValidateNotNull(nameof(transformer), transformer); }
/// <summary> /// Creates <see cref="PotentiallyAsyncWriterAndObservable{TValue}"/> which will write <see cref="JToken"/>s as character enumerables to given sink. /// </summary> /// <param name="logic">This <see cref="PotentiallyAsyncWriterLogic{TValue, TSink}"/>.</param> /// <param name="sink">The sink to which perform writing.</param> /// <returns>An instance of <see cref="PotentiallyAsyncWriterAndObservable{TValue}"/> to be used to serialize <see cref="JToken"/>s to <paramref name="sink"/>.</returns> public static PotentiallyAsyncWriterAndObservable <JToken> CreateJTokenWriter <TSink>( this PotentiallyAsyncWriterLogic <IEnumerable <Char>, TSink> logic, TSink sink ) { return(WriterFactory.CreateTransformableWriter <JToken, TSink, IEnumerable <Char> >( ArgumentValidator.ValidateNotNullReference(logic), sink, TransformJToken )); }