/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Components/test/testassets/BasicTestApp/PreserveStateService.cs
51 строка
1 KB
dotnet-maestro-bot
[automated] Merge branch 'release/8.0' => 'main' (#50792)
20 сен 2023, 13:14
Не верифицирован
20 сен 2023, 13:14
2ce54c6
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; namespace BasicTestApp; public class PreserveStateService : IDisposable { private readonly PersistentComponentState _componentApplicationState; private PersistingComponentStateSubscription _persistingSubscription; private ServiceState _state = new(); public PreserveStateService(PersistentComponentState componentApplicationState) { _componentApplicationState = componentApplicationState; _persistingSubscription = _componentApplicationState.RegisterOnPersisting(PersistState, RenderMode.InteractiveAuto); TryRestoreState(); } public Guid Guid => _state.TheState; private void TryRestoreState() { if (_componentApplicationState.TryTakeFromJson<ServiceState>("Service", out var state)) { _state = state; } else { _state = new ServiceState { TheState = Guid.NewGuid() }; } } public void NewState() => _state = new ServiceState { TheState = Guid.NewGuid() }; private Task PersistState() { _componentApplicationState.PersistAsJson("Service", _state); return Task.CompletedTask; } public void Dispose() => _persistingSubscription.Dispose(); private class ServiceState { public Guid TheState { get; set; } } }