@@ -15,11 +15,6 @@ namespace WebApiClient.Parameterables
1515 [ DebuggerTypeProxy ( typeof ( DebugView ) ) ]
1616 public class MulitpartFile : Stream , IApiParameterable
1717 {
18- /// <summary>
19- /// 数据流
20- /// </summary>
21- private readonly Stream innerStream ;
22-
2318 /// <summary>
2419 /// 指示是否可以dispose传入的stream
2520 /// </summary>
@@ -35,6 +30,10 @@ public class MulitpartFile : Stream, IApiParameterable
3530 /// </summary>
3631 private long currentBytes = 0L ;
3732
33+ /// <summary>
34+ /// 获取或设置包装的内部数据流
35+ /// </summary>
36+ protected Stream InnerStream { get ; }
3837
3938 /// <summary>
4039 /// 上传进度变化事件
@@ -64,40 +63,66 @@ public virtual string EncodedFileName
6463 /// </summary>
6564 public override bool CanRead
6665 {
67- get => this . innerStream . CanRead ;
66+ get => this . InnerStream . CanRead ;
6867 }
6968
7069 /// <summary>
7170 /// 返回是否可探索位置
7271 /// </summary>
7372 public override bool CanSeek
7473 {
75- get => this . innerStream . CanSeek ;
74+ get => this . InnerStream . CanSeek ;
7675 }
7776
7877 /// <summary>
7978 /// 返回是否可写
8079 /// </summary>
8180 public override bool CanWrite
8281 {
83- get => this . innerStream . CanWrite ;
82+ get => this . InnerStream . CanWrite ;
8483 }
8584
8685 /// <summary>
8786 /// 返回数据流长度
8887 /// </summary>
8988 public override long Length
9089 {
91- get => this . innerStream . Length ;
90+ get => this . InnerStream . Length ;
9291 }
9392
9493 /// <summary>
95- /// 返回数据流当前的指针位置
94+ /// 获取或设置数据流当前的指针位置
9695 /// </summary>
9796 public override long Position
9897 {
99- get => this . innerStream . Position ;
100- set => this . innerStream . Position = value ;
98+ get => this . InnerStream . Position ;
99+ set => this . InnerStream . Position = value ;
100+ }
101+
102+ /// <summary>
103+ /// 获取或设置读取的超时时间
104+ /// </summary>
105+ public override int ReadTimeout
106+ {
107+ get => this . InnerStream . ReadTimeout ;
108+ set => this . InnerStream . ReadTimeout = value ;
109+ }
110+
111+ /// <summary>
112+ /// 获取或设置写入的超时时间
113+ /// </summary>
114+ public override int WriteTimeout
115+ {
116+ get => this . InnerStream . WriteTimeout ;
117+ set => this . InnerStream . WriteTimeout = value ;
118+ }
119+
120+ /// <summary>
121+ /// 获取一个值,该值确定当前流是否可以超时
122+ /// </summary>
123+ public override bool CanTimeout
124+ {
125+ get => this . InnerStream . CanTimeout ;
101126 }
102127
103128 /// <summary>
@@ -143,7 +168,7 @@ public MulitpartFile(Stream stream, string fileName)
143168 /// <exception cref="ArgumentNullException"></exception>
144169 public MulitpartFile ( Stream stream , string fileName , bool disposeStream )
145170 {
146- this . innerStream = stream ?? throw new ArgumentNullException ( nameof ( stream ) ) ;
171+ this . InnerStream = stream ?? throw new ArgumentNullException ( nameof ( stream ) ) ;
147172 this . disposeInnerStream = disposeStream ;
148173 this . FileName = fileName ;
149174
@@ -181,7 +206,7 @@ protected virtual async Task BeforeRequestAsync(ApiActionContext context, ApiPar
181206 /// </summary>
182207 public sealed override void Flush ( )
183208 {
184- this . innerStream . Flush ( ) ;
209+ this . InnerStream . Flush ( ) ;
185210 }
186211
187212 /// <summary>
@@ -191,7 +216,7 @@ public sealed override void Flush()
191216 /// <returns></returns>
192217 public sealed override Task FlushAsync ( CancellationToken cancellationToken )
193218 {
194- return this . innerStream . FlushAsync ( cancellationToken ) ;
219+ return this . InnerStream . FlushAsync ( cancellationToken ) ;
195220 }
196221
197222 /// <summary>
@@ -202,7 +227,7 @@ public sealed override Task FlushAsync(CancellationToken cancellationToken)
202227 /// <returns></returns>
203228 public sealed override long Seek ( long offset , SeekOrigin origin )
204229 {
205- return this . innerStream . Seek ( offset , origin ) ;
230+ return this . InnerStream . Seek ( offset , origin ) ;
206231 }
207232
208233 /// <summary>
@@ -211,7 +236,7 @@ public sealed override long Seek(long offset, SeekOrigin origin)
211236 /// <param name="value">长度值</param>
212237 public sealed override void SetLength ( long value )
213238 {
214- this . innerStream . SetLength ( value ) ;
239+ this . InnerStream . SetLength ( value ) ;
215240 }
216241
217242#if ! NETSTANDARD1_3
@@ -226,7 +251,7 @@ public sealed override void SetLength(long value)
226251 /// <returns></returns>
227252 public sealed override IAsyncResult BeginRead ( byte [ ] buffer , int offset , int count , AsyncCallback callback , object state )
228253 {
229- return this . innerStream . BeginRead ( buffer , offset , count , callback , state ) ;
254+ return this . InnerStream . BeginRead ( buffer , offset , count , callback , state ) ;
230255 }
231256
232257 /// <summary>
@@ -236,7 +261,7 @@ public sealed override IAsyncResult BeginRead(byte[] buffer, int offset, int cou
236261 /// <returns></returns>
237262 public sealed override int EndRead ( IAsyncResult asyncResult )
238263 {
239- var length = this . innerStream . EndRead ( asyncResult ) ;
264+ var length = this . InnerStream . EndRead ( asyncResult ) ;
240265 this . OnRead ( length ) ;
241266 return length ;
242267 }
@@ -246,7 +271,7 @@ public sealed override int EndRead(IAsyncResult asyncResult)
246271 /// </summary>
247272 public sealed override void Close ( )
248273 {
249- this . innerStream . Close ( ) ;
274+ this . InnerStream . Close ( ) ;
250275 }
251276#endif
252277
@@ -259,7 +284,7 @@ public sealed override void Close()
259284 /// <returns></returns>
260285 public sealed override int Read ( byte [ ] buffer , int offset , int count )
261286 {
262- var length = this . innerStream . Read ( buffer , offset , count ) ;
287+ var length = this . InnerStream . Read ( buffer , offset , count ) ;
263288 this . OnRead ( length ) ;
264289 return length ;
265290 }
@@ -274,7 +299,7 @@ public sealed override int Read(byte[] buffer, int offset, int count)
274299 /// <returns></returns>
275300 public sealed override async Task < int > ReadAsync ( byte [ ] buffer , int offset , int count , CancellationToken cancellationToken )
276301 {
277- var length = await this . innerStream . ReadAsync ( buffer , offset , count , cancellationToken ) . ConfigureAwait ( false ) ;
302+ var length = await this . InnerStream . ReadAsync ( buffer , offset , count , cancellationToken ) . ConfigureAwait ( false ) ;
278303 this . OnRead ( length ) ;
279304 return length ;
280305 }
@@ -309,7 +334,7 @@ protected virtual void OnUploadProgressChanged(ProgressEventArgs e)
309334 /// <param name="count">写入的长度</param>
310335 public override void Write ( byte [ ] buffer , int offset , int count )
311336 {
312- this . innerStream . Write ( buffer , offset , count ) ;
337+ this . InnerStream . Write ( buffer , offset , count ) ;
313338 }
314339
315340 /// <summary>
@@ -320,7 +345,7 @@ protected override void Dispose(bool disposing)
320345 {
321346 if ( disposing && this . disposeInnerStream )
322347 {
323- this . innerStream . Dispose ( ) ;
348+ this . InnerStream . Dispose ( ) ;
324349 }
325350 base . Dispose ( disposing ) ;
326351 }
0 commit comments