В моем веб-API у меня есть конечная точка для операций CRUD над объектом, который содержит enum
Свойства.
// User.cs
public class User
{
public string Username { get; set; }
public Platform Platform { get; set; }
}
public enum Platform
{
Windows, Linux, MacOS
}
// UserController.cs
public class UserController : ApiController
{
public IHttpActionResult Post(User value)
{
users.Add(value);
return Ok();
}
//...
}
Когда конечная точка вызывается со следующей полезной нагрузкой, она отлично работает:
{"Username": "jason", "Platform": "Linux"}
ASP .NET правильно анализирует значение перечисления как Platform.Linux
Однако, если корпус отличается, например:
{"Username": "jason", "Platform": "linux"}
Тогда ASP .NET не распознает это как Platform.Linux
и вместо этого будет молча использовать значение по умолчанию Platform.Windows
.
API получает запросы от других служб, которые я не могу изменить, поэтому я должен поддерживать оба варианта оболочки.
Я знаю, что могу просто использовать два эквивалентных значения перечисления с разными регистрами, например:
public enum Platform
{
Windows=0, windows=0,
Linux=1, linux=1,
MacOS=2, macos=2
}
Но мне интересно, есть ли лучшее решение?