Skip to content

Commit f6362e0

Browse files
refactor : use new ThrowIf overload of ObjectDisposedException (#42613)
Co-authored-by: James Newton-King <[email protected]>
1 parent 27939db commit f6362e0

File tree

21 files changed

+39
-149
lines changed

21 files changed

+39
-149
lines changed

src/Components/Components/src/OwningComponentBase.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@ protected IServiceProvider ScopedServices
3737
throw new InvalidOperationException("Services cannot be accessed before the component is initialized.");
3838
}
3939

40-
if (IsDisposed)
41-
{
42-
throw new ObjectDisposedException(GetType().Name);
43-
}
40+
ObjectDisposedException.ThrowIf(IsDisposed, this);
4441

4542
_scope ??= ScopeFactory.CreateAsyncScope();
4643
return _scope.Value.ServiceProvider;
@@ -85,10 +82,7 @@ protected TService Service
8582
{
8683
get
8784
{
88-
if (IsDisposed)
89-
{
90-
throw new ObjectDisposedException(GetType().Name);
91-
}
85+
ObjectDisposedException.ThrowIf(IsDisposed, this);
9286

9387
// We cache this because we don't know the lifetime. We have to assume that it could be transient.
9488
_item ??= ScopedServices.GetRequiredService<TService>();

src/Components/Shared/src/ArrayBuilder.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,7 @@ protected void GrowBuffer(int desiredCapacity)
174174
// If someone tries to do something that would require non-zero storage then
175175
// this is a use-after-free. Throwing here is an easy way to prevent that without
176176
// introducing overhead to every method.
177-
if (_disposed)
178-
{
179-
ThrowObjectDisposedException();
180-
}
177+
ObjectDisposedException.ThrowIf(_disposed, null);
181178

182179
var newCapacity = Math.Max(desiredCapacity, _minCapacity);
183180
Debug.Assert(newCapacity > _items.Length);
@@ -216,9 +213,4 @@ private static void ThrowIndexOutOfBoundsException()
216213
{
217214
throw new ArgumentOutOfRangeException("index");
218215
}
219-
220-
private static void ThrowObjectDisposedException()
221-
{
222-
throw new ObjectDisposedException(objectName: null);
223-
}
224216
}

src/Hosting/TestHost/src/TestServer.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,7 @@ Task IServer.StartAsync<TContext>(IHttpApplication<TContext> application, Cancel
252252
{
253253
_application = new ApplicationWrapper<TContext>(application, () =>
254254
{
255-
if (_disposed)
256-
{
257-
throw new ObjectDisposedException(GetType().FullName);
258-
}
255+
ObjectDisposedException.ThrowIf(_disposed, this);
259256
});
260257

261258
return Task.CompletedTask;

src/Hosting/TestHost/src/TestWebSocket.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,7 @@ private void Close()
172172

173173
private void ThrowIfDisposed()
174174
{
175-
if (_state >= WebSocketState.Closed) // or Aborted
176-
{
177-
throw new ObjectDisposedException(typeof(TestWebSocket).FullName);
178-
}
175+
ObjectDisposedException.ThrowIf(_state >= WebSocketState.Closed, typeof(TestWebSocket)); // or Aborted
179176
}
180177

181178
private void ThrowIfOutputClosed()
@@ -282,10 +279,8 @@ public Task SendAsync(Message message)
282279
{
283280
lock (_messageQueue)
284281
{
285-
if (_senderClosed)
286-
{
287-
throw new ObjectDisposedException(typeof(TestWebSocket).FullName);
288-
}
282+
ObjectDisposedException.ThrowIf(_senderClosed, typeof(TestWebSocket));
283+
289284
if (_receiverClosed)
290285
{
291286
throw new IOException("The remote end closed the connection.", new ObjectDisposedException(typeof(TestWebSocket).FullName));
@@ -335,14 +330,10 @@ public void SetSenderClosed()
335330

336331
private void ThrowNoReceive()
337332
{
338-
if (_receiverClosed)
339-
{
340-
throw new ObjectDisposedException(typeof(TestWebSocket).FullName);
341-
}
342-
else // _senderClosed
343-
{
344-
throw new IOException("The remote end closed the connection.", new ObjectDisposedException(typeof(TestWebSocket).FullName));
345-
}
333+
ObjectDisposedException.ThrowIf(_receiverClosed, typeof(TestWebSocket));
334+
335+
// _senderClosed must be true.
336+
throw new IOException("The remote end closed the connection.", new ObjectDisposedException(typeof(TestWebSocket).FullName));
346337
}
347338
}
348339
}

src/Http/Http/src/Internal/ReferenceReadStream.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ protected override void Dispose(bool disposing)
150150

151151
private void ThrowIfDisposed()
152152
{
153-
if (_disposed)
154-
{
155-
throw new ObjectDisposedException(nameof(ReferenceReadStream));
156-
}
153+
ObjectDisposedException.ThrowIf(_disposed, nameof(ReferenceReadStream));
157154
}
158155
}

src/Http/WebUtilities/src/BufferedReadStream.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -419,10 +419,7 @@ private static string DecodeLine(MemoryStream builder, bool foundCRLF)
419419

420420
private void CheckDisposed()
421421
{
422-
if (_disposed)
423-
{
424-
throw new ObjectDisposedException(nameof(BufferedReadStream));
425-
}
422+
ObjectDisposedException.ThrowIf(_disposed, nameof(BufferedReadStream));
426423
}
427424

428425
private static void ValidateBuffer(byte[] buffer, int offset, int count)

src/Http/WebUtilities/src/FileBufferingReadStream.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,6 @@ public override async ValueTask DisposeAsync()
502502

503503
private void ThrowIfDisposed()
504504
{
505-
if (_disposed)
506-
{
507-
throw new ObjectDisposedException(nameof(FileBufferingReadStream));
508-
}
505+
ObjectDisposedException.ThrowIf(_disposed, nameof(FileBufferingReadStream));
509506
}
510507
}

src/Http/WebUtilities/src/FileBufferingWriteStream.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -283,18 +283,12 @@ private void EnsureFileStream()
283283

284284
private void ThrowIfDisposed()
285285
{
286-
if (Disposed)
287-
{
288-
throw new ObjectDisposedException(nameof(FileBufferingWriteStream));
289-
}
286+
ObjectDisposedException.ThrowIf(Disposed, nameof(FileBufferingWriteStream));
290287
}
291288

292289
private static void ThrowArgumentException(byte[] buffer, int offset, int count)
293290
{
294-
if (buffer == null)
295-
{
296-
throw new ArgumentNullException(nameof(buffer));
297-
}
291+
ArgumentNullException.ThrowIfNull(buffer);
298292

299293
if (offset < 0)
300294
{

src/Http/WebUtilities/src/HttpRequestStreamReader.cs

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,7 @@ protected override void Dispose(bool disposing)
123123
/// <inheritdoc />
124124
public override int Peek()
125125
{
126-
if (_disposed)
127-
{
128-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
129-
}
126+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
130127

131128
if (_charBufferIndex == _charsRead)
132129
{
@@ -142,10 +139,7 @@ public override int Peek()
142139
/// <inheritdoc />
143140
public override int Read()
144141
{
145-
if (_disposed)
146-
{
147-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
148-
}
142+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
149143

150144
if (_charBufferIndex == _charsRead)
151145
{
@@ -188,10 +182,7 @@ public override int Read(Span<char> buffer)
188182
throw new ArgumentNullException(nameof(buffer));
189183
}
190184

191-
if (_disposed)
192-
{
193-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
194-
}
185+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
195186

196187
var count = buffer.Length;
197188
var charsRead = 0;
@@ -260,10 +251,7 @@ public override Task<int> ReadAsync(char[] buffer, int index, int count)
260251
[SuppressMessage("ApiDesign", "RS0027:Public API with optional parameter(s) should have the most parameters amongst its public overloads.", Justification = "Required to maintain compatibility")]
261252
public override async ValueTask<int> ReadAsync(Memory<char> buffer, CancellationToken cancellationToken = default)
262253
{
263-
if (_disposed)
264-
{
265-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
266-
}
254+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
267255

268256
if (_charBufferIndex == _charsRead && await ReadIntoBufferAsync() == 0)
269257
{
@@ -353,10 +341,7 @@ public override async ValueTask<int> ReadAsync(Memory<char> buffer, Cancellation
353341
/// <inheritdoc />
354342
public override async Task<string?> ReadLineAsync()
355343
{
356-
if (_disposed)
357-
{
358-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
359-
}
344+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
360345

361346
StringBuilder? sb = null;
362347
var consumeLineFeed = false;
@@ -391,10 +376,7 @@ public override async ValueTask<int> ReadAsync(Memory<char> buffer, Cancellation
391376
/// <inheritdoc />
392377
public override string? ReadLine()
393378
{
394-
if (_disposed)
395-
{
396-
throw new ObjectDisposedException(nameof(HttpRequestStreamReader));
397-
}
379+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpRequestStreamReader));
398380

399381
StringBuilder? sb = null;
400382
var consumeLineFeed = false;

src/Http/WebUtilities/src/HttpResponseStreamWriter.cs

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ public HttpResponseStreamWriter(
108108
/// <inheritdoc/>
109109
public override void Write(char value)
110110
{
111-
if (_disposed)
112-
{
113-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
114-
}
111+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
115112

116113
if (_charBufferCount == _charBufferSize)
117114
{
@@ -125,10 +122,7 @@ public override void Write(char value)
125122
/// <inheritdoc/>
126123
public override void Write(char[] values, int index, int count)
127124
{
128-
if (_disposed)
129-
{
130-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
131-
}
125+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
132126

133127
if (values == null)
134128
{
@@ -149,10 +143,7 @@ public override void Write(char[] values, int index, int count)
149143
/// <inheritdoc/>
150144
public override void Write(ReadOnlySpan<char> value)
151145
{
152-
if (_disposed)
153-
{
154-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
155-
}
146+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
156147

157148
var remaining = value.Length;
158149
while (remaining > 0)
@@ -172,10 +163,7 @@ public override void Write(ReadOnlySpan<char> value)
172163
/// <inheritdoc/>
173164
public override void Write(string? value)
174165
{
175-
if (_disposed)
176-
{
177-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
178-
}
166+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
179167

180168
if (value == null)
181169
{
@@ -198,10 +186,7 @@ public override void Write(string? value)
198186
/// <inheritdoc/>
199187
public override void WriteLine(ReadOnlySpan<char> value)
200188
{
201-
if (_disposed)
202-
{
203-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
204-
}
189+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
205190

206191
Write(value);
207192
Write(NewLine);
@@ -523,10 +508,7 @@ private async Task WriteLineAsyncAwaited(string value)
523508
/// <inheritdoc/>
524509
public override void Flush()
525510
{
526-
if (_disposed)
527-
{
528-
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
529-
}
511+
ObjectDisposedException.ThrowIf(_disposed, nameof(HttpResponseStreamWriter));
530512

531513
FlushInternal(flushEncoder: true);
532514
}

src/Http/WebUtilities/src/PagedByteBuffer.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,6 @@ private void ClearBuffers()
136136

137137
private void ThrowIfDisposed()
138138
{
139-
if (Disposed)
140-
{
141-
throw new ObjectDisposedException(nameof(PagedByteBuffer));
142-
}
139+
ObjectDisposedException.ThrowIf(Disposed, nameof(PagedByteBuffer));
143140
}
144141
}

src/Identity/EntityFrameworkCore/src/RoleStore.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,10 +346,7 @@ protected virtual async Task SaveChanges(CancellationToken cancellationToken)
346346
/// </summary>
347347
protected void ThrowIfDisposed()
348348
{
349-
if (_disposed)
350-
{
351-
throw new ObjectDisposedException(GetType().Name);
352-
}
349+
ObjectDisposedException.ThrowIf(_disposed, this);
353350
}
354351

355352
/// <summary>

src/JSInterop/Microsoft.JSInterop/src/DotNetObjectReferenceOfT.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ public void Dispose()
9797

9898
internal void ThrowIfDisposed()
9999
{
100-
if (Disposed)
101-
{
102-
throw new ObjectDisposedException(GetType().Name);
103-
}
100+
ObjectDisposedException.ThrowIf(Disposed, this);
104101
}
105102
}

src/JSInterop/Microsoft.JSInterop/src/Implementation/JSObjectReference.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ public async ValueTask DisposeAsync()
6262
/// <inheritdoc />
6363
protected void ThrowIfDisposed()
6464
{
65-
if (Disposed)
66-
{
67-
throw new ObjectDisposedException(GetType().Name);
68-
}
65+
ObjectDisposedException.ThrowIf(Disposed, this);
6966
}
7067
}

src/Middleware/Spa/SpaServices.Extensions/test/ListLoggerFactory.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ public virtual ILogger CreateLogger(string name)
4646

4747
private void CheckDisposed()
4848
{
49-
if (_disposed)
50-
{
51-
throw new ObjectDisposedException(nameof(ListLoggerFactory));
52-
}
49+
ObjectDisposedException.ThrowIf(_disposed, nameof(ListLoggerFactory));
5350
}
5451

5552
public void AddProvider(ILoggerProvider provider)

src/Middleware/WebSockets/test/UnitTests/BufferStream.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,6 @@ protected override void Dispose(bool disposing)
338338

339339
private void CheckDisposed()
340340
{
341-
if (_disposed)
342-
{
343-
throw new ObjectDisposedException(GetType().FullName);
344-
}
341+
ObjectDisposedException.ThrowIf(_disposed, this);
345342
}
346343
}

src/Servers/HttpSys/src/HttpSysListener.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,6 @@ internal unsafe void SendError(ulong requestId, int httpStatusCode, IList<string
418418

419419
private void CheckDisposed()
420420
{
421-
if (_state == State.Disposed)
422-
{
423-
throw new ObjectDisposedException(this.GetType().FullName);
424-
}
421+
ObjectDisposedException.ThrowIf(_state == State.Disposed, this);
425422
}
426423
}

src/Servers/HttpSys/src/NativeInterop/RequestQueue.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ public void Dispose()
148148

149149
private void CheckDisposed()
150150
{
151-
if (_disposed)
152-
{
153-
throw new ObjectDisposedException(this.GetType().FullName);
154-
}
151+
ObjectDisposedException.ThrowIf(_disposed, this);
155152
}
156153

157154
private static partial class Log

0 commit comments

Comments
 (0)