Чтобы использовать 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();
}
}