NullableEnumModelBinderProvider.cs 816 B

1234567891011121314151617181920212223242526
  1. using System;
  2. using Microsoft.AspNetCore.Mvc.ModelBinding;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using Microsoft.Extensions.Logging;
  5. namespace Jellyfin.Api.ModelBinders;
  6. /// <summary>
  7. /// Nullable enum model binder provider.
  8. /// </summary>
  9. public class NullableEnumModelBinderProvider : IModelBinderProvider
  10. {
  11. /// <inheritdoc />
  12. public IModelBinder? GetBinder(ModelBinderProviderContext context)
  13. {
  14. var nullableType = Nullable.GetUnderlyingType(context.Metadata.ModelType);
  15. if (nullableType is null || !nullableType.IsEnum)
  16. {
  17. // Type isn't nullable or isn't an enum.
  18. return null;
  19. }
  20. var logger = context.Services.GetRequiredService<ILogger<NullableEnumModelBinder>>();
  21. return new NullableEnumModelBinder(logger);
  22. }
  23. }