Mds.Libraries.CSharp.EnumBinding 2.0.0
Mds.Libraries.CSharp.EnumBinding
Пакет для удобного и управляемого биндинга Enum в Api.
Пример работы
public class SelectHarmonizationLinksParameters
{
// Можно прописать для Enum свойства
// В параметрах мы указываем каким способом биндить это свойство
// Если будет не указан, то будет использоваться способ по умолчанию, который указывается при подключении библиотеки в проект
[JsonProperty("type")]
[EnumBinding(EnumBinding.Description)]
public ContractType Type { get; set; }
// Можно прописать для перечисления Enum свойства
[FromQuery(Name = "catalog")]
[EnumBinding]
public IEnumerable<HarmonizationLinkCatalog> Catalogs { get; set; }
// Можно к валидации добавить сообщение об ошибке
[FromQuery(Name = "status")]
[EnumBinding(ErrorMessage = "One or more of orders statuses is incorrect.")]
public IEnumerable<Status> Statuses { get; set; }
}
Так же аттрибуты используются в качестве валидационных аттрибутов, они проверяют, что значения Enum были переданы верные.
Подключение в проект
// Подключение в проект для биндинга Query
services.AddMvc(options =>
{
//...
// В параметрах пережается методы биндинга по умолчанию
options.AddMdsEnumBinder(EnumBinding.Value | EnumBinding.Description | EnumBinding.EnumMember);
//...
})
// Подключение в проект для биндинга в теле запроса
.AddNewtonsoftJson(options =>
{
//...
// В параметрах пережается методы биндинга по умолчанию
options.AddMdsEnumJsonConverter(EnumBinding.Value | EnumBinding.Description | EnumBinding.EnumMember);
//...
})
Варианты биндинга
EnumBinding имеет следующие значения:
Value- Использовать значениеEnum.Name- Использовать название значенияEnum.Description- Использовать аттрибутDescription.EnumMember- Использовать аттрибутEnumMember.Any- Использовать любой способ.
EnumBinding помечен как Flag, поэтому можно использовать несколько значений сразу.
public class SelectHarmonizationLinksParameters
{
[JsonProperty("type")]
[EnumBinding(EnumBinding.Value | EnumBinding.Description | EnumBinding.EnumMember)]
public ContractType Type { get; set; }
}
Внимание!!! Особенности работы с IEnumerable
Когда мы прописываем аттрибут для IEnumerable технически мы тоже можем прописать способы биндинга в этом конкретном случае, но это не будет работать. Эта особенность из-за того, что внутрь биндинга для IEnumerable не передается информация об аттрибутах. Поэтому, для IEnumerable всегда будет использоваться поведение по умолчанию, заданное при подключении библиотеки в проект. Поэтому, можете не указывать флаги в таких случаях.
public class SelectHarmonizationLinksParameters
{
[FromQuery(Name = "catalog")]
// Можно прописать любые флаги - они будут игнорироваться, поэтому лучше не писать никаких флагов
[EnumBinding(EnumBinding.Description)] // Так лучше не писать
[EnumBinding] // Рекомендую писать так, НО только для IEnumerable иил других Generic от Enum
public IEnumerable<HarmonizationLinkCatalog> Catalogs { get; set; }
}
No packages depend on Mds.Libraries.CSharp.EnumBinding.
.NET 7.0
- Microsoft.AspNetCore.Mvc (>= 2.2.0)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 7.0.5)
- RestSharp (>= 110.2.0)
| Version | Downloads | Last updated |
|---|---|---|
| 2.1.1 | 2 | 02/28/2026 |
| 2.1.0 | 1 | 02/28/2026 |
| 2.1.0-beta.11150 | 1 | 02/28/2026 |
| 2.0.0 | 1 | 02/28/2026 |
| 1.0.0 | 1 | 02/28/2026 |