diff --git a/src/MvvmBlazor.CodeGenerators/Components/MvvmComponentGenerator.cs b/src/MvvmBlazor.CodeGenerators/Components/MvvmComponentGenerator.cs index 5f42f88..f5165c3 100644 --- a/src/MvvmBlazor.CodeGenerators/Components/MvvmComponentGenerator.cs +++ b/src/MvvmBlazor.CodeGenerators/Components/MvvmComponentGenerator.cs @@ -151,7 +151,7 @@ private static string GenerateComponentCode(MvvmComponentClassContext componentC namespace {componentNamespace} {{ - partial class {componentClassName} : IDisposable + partial class {componentClassName} : IDisposable, IAsyncDisposable {{ private AsyncServiceScope? _scope; @@ -235,12 +235,35 @@ public void Dispose() _scope = null; Dispose(true); GC.SuppressFinalize(this); + IsDisposed = true; }} }} protected virtual void Dispose(bool disposing) {{ }} + + public async ValueTask DisposeAsync() + {{ + if (!IsDisposed) + {{ + if (_scope is not null) + {{ + await _scope.Value.DisposeAsync(); + _scope = null; + }} + + await DisposeAsyncCore(); + Dispose(false); + GC.SuppressFinalize(this); + IsDisposed = true; + }} + }} + + protected virtual ValueTask DisposeAsyncCore() + {{ + return ValueTask.CompletedTask; + }} }} }} "; diff --git a/src/MvvmBlazor.Tests/Components/MvvmComponentBaseTTests.cs b/src/MvvmBlazor.Tests/Components/MvvmComponentBaseTTests.cs index 1e9cbda..7d56f84 100644 --- a/src/MvvmBlazor.Tests/Components/MvvmComponentBaseTTests.cs +++ b/src/MvvmBlazor.Tests/Components/MvvmComponentBaseTTests.cs @@ -180,10 +180,5 @@ public Task AfterRenderAsync(bool firstRender) { return OnAfterRenderAsync(firstRender); } - - public Task ParametersAsync(ParameterView parameters) - { - return SetParametersAsync(parameters); - } } } \ No newline at end of file