Использование перечислений для обновления системного одноэлементного класса в веб-API ASP.NET Core

Чтобы использовать Enum для обновления системного одноэлементного класса в проекте веб-API ASP.NET Core, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1. Непосредственное обновление значения Enum в одноэлементном классе.

public enum SystemStatus
{
    Active,
    Inactive,
    Suspended
}
public class SystemSettings
{
    private static SystemSettings _instance;
    private static readonly object _lock = new object();
    public SystemStatus Status { get; set; }
    private SystemSettings()
    {
        // Private constructor to prevent instantiation
    }
    public static SystemSettings Instance
    {
        get
        {
            if (_instance == null)
            {
                lock (_lock)
                {
                    if (_instance == null)
                    {
                        _instance = new SystemSettings();
                    }
                }
            }
            return _instance;
        }
    }
}
// Usage:
SystemSettings.Instance.Status = SystemStatus.Active;

Метод 2. Создайте метод в классе Singleton для обновления значения Enum.

public enum SystemStatus
{
    Active,
    Inactive,
    Suspended
}
public class SystemSettings
{
    private static SystemSettings _instance;
    private static readonly object _lock = new object();
    public SystemStatus Status { get; private set; }
    private SystemSettings()
    {
        // Private constructor to prevent instantiation
    }
    public static SystemSettings Instance
    {
        get
        {
            if (_instance == null)
            {
                lock (_lock)
                {
                    if (_instance == null)
                    {
                        _instance = new SystemSettings();
                    }
                }
            }
            return _instance;
        }
    }
    public void UpdateStatus(SystemStatus newStatus)
    {
        Status = newStatus;
    }
}
// Usage:
SystemSettings.Instance.UpdateStatus(SystemStatus.Active);

Метод 3. Используйте отдельный класс или службу для обработки обновлений Enum.

public enum SystemStatus
{
    Active,
    Inactive,
    Suspended
}
public class SystemSettings
{
    public SystemStatus Status { get; set; }
}
public interface ISystemSettingsService
{
    void UpdateStatus(SystemStatus newStatus);
}
public class SystemSettingsService : ISystemSettingsService
{
    private readonly SystemSettings _systemSettings;
    public SystemSettingsService(SystemSettings systemSettings)
    {
        _systemSettings = systemSettings;
    }
    public void UpdateStatus(SystemStatus newStatus)
    {
        _systemSettings.Status = newStatus;
    }
}
// Usage:
// Register the services in the DI container
services.AddSingleton<SystemSettings>();
services.AddSingleton<ISystemSettingsService, SystemSettingsService>();
// Inject and use the ISystemSettingsService where needed
public class MyController : ControllerBase
{
    private readonly ISystemSettingsService _systemSettingsService;
    public MyController(ISystemSettingsService systemSettingsService)
    {
        _systemSettingsService = systemSettingsService;
    }
// Example action method
    public IActionResult UpdateStatus(SystemStatus newStatus)
    {
        _systemSettingsService.UpdateStatus(newStatus);
        return Ok();
    }
}