BodyOrDefaultModelBinderProviderSetup.cs 1.0 KB

1234567891011121314151617181920212223242526272829
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Microsoft.AspNetCore.Mvc.ModelBinding;
  4. using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
  5. #if NET5_0_OR_GREATER
  6. using ComplexDataModelBinderProvider = Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexObjectModelBinderProvider;
  7. #else
  8. using ComplexDataModelBinderProvider = Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinderProvider;
  9. #endif
  10. namespace Masuit.Tools.AspNetCore.ModelBinder
  11. {
  12. public static class BodyOrDefaultModelBinderProviderSetup
  13. {
  14. public static void InsertBodyOrDefaultBinding(this IList<IModelBinderProvider> providers)
  15. {
  16. var bodyProvider = providers.Single(provider => provider.GetType() == typeof(BodyModelBinderProvider)) as BodyModelBinderProvider;
  17. var complexDataProvider = providers.OfType<ComplexDataModelBinderProvider>().Single();
  18. var bodyOrDefault = new BodyOrDefaultModelBinderProvider(bodyProvider, complexDataProvider);
  19. providers.Insert(0, bodyOrDefault);
  20. }
  21. }
  22. }