NullableEnumModelBinderProvider.cs 893 B

123456789101112131415161718192021222324252627
  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. {
  7. /// <summary>
  8. /// Nullable enum model binder provider.
  9. /// </summary>
  10. public class NullableEnumModelBinderProvider : IModelBinderProvider
  11. {
  12. /// <inheritdoc />
  13. public IModelBinder? GetBinder(ModelBinderProviderContext context)
  14. {
  15. var nullableType = Nullable.GetUnderlyingType(context.Metadata.ModelType);
  16. if (nullableType == null || !nullableType.IsEnum)
  17. {
  18. // Type isn't nullable or isn't an enum.
  19. return null;
  20. }
  21. var logger = context.Services.GetRequiredService<ILogger<NullableEnumModelBinder>>();
  22. return new NullableEnumModelBinder(logger);
  23. }
  24. }
  25. }