/// <summary> /// /// </summary> /// <param name="fileWriter"></param> /// <param name="optimizedContentLengthBeforeMakeStream">Не обязателен, но при его задании чтение Length не будет приводить к созданию стрима с предварительной подготовкой</param> public FileContentProvider(FileWriterDelegate fileWriter, ContentLengthDelegate optimizedContentLengthBeforeMakeStream = null) { NotNull.CheckArgument(() => fileWriter); _fileWriter = fileWriter; _optimizedContentLengthBeforeMakeStream = optimizedContentLengthBeforeMakeStream; }
/// <summary> /// /// </summary> /// <param name="streamWriter"></param> /// <param name="optimizedContentLengthBeforeMakeStream">Не обязателен, но при его задании чтение Length не будет приводить к созданию стрима с предварительной подготовкой</param> public ContentProviderToStreamWritable(StreamWriterDelegate streamWriter, ContentLengthDelegate optimizedContentLengthBeforeMakeStream = null) { NotNull.CheckArgument(() => streamWriter); _streamWriter = streamWriter; _optimizedContentLengthBeforeMakeStream = optimizedContentLengthBeforeMakeStream; }
public LazyConstructableStream(Func <Stream> streamFactory, Func <long?> optimizedSizeGetterWithoutStreamCreating = null) { _optimizedSizeGetter = optimizedSizeGetterWithoutStreamCreating; NotNull.CheckArgument(() => streamFactory); _stream = new Lazy <Stream>( () => { var stream = streamFactory(); stream.Position = _virtualPosition; return(stream); }, LazyThreadSafetyMode.None); }