/// <summary>
        /// Creates a new <see cref="DynamicDtoModelBinder"/>.
        /// </summary>
        /// <param name="formatters">The list of <see cref="IInputFormatter"/>.</param>
        /// <param name="readerFactory">
        /// The <see cref="IHttpRequestStreamReaderFactory"/>, used to create <see cref="System.IO.TextReader"/>
        /// instances for reading the request body.
        /// </param>
        /// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
        /// <param name="options">The <see cref="MvcOptions"/>.</param>
        /// <param name="dynamicDtoTypeBuilder">Dynamic DTO builder</param>
        public DynamicDtoModelBinder(
            IList <IInputFormatter> formatters,
            IHttpRequestStreamReaderFactory readerFactory,
            ILoggerFactory?loggerFactory,
            MvcOptions?options,
            IDynamicDtoTypeBuilder dynamicDtoTypeBuilder)
        {
            if (formatters == null)
            {
                throw new ArgumentNullException(nameof(formatters));
            }

            if (readerFactory == null)
            {
                throw new ArgumentNullException(nameof(readerFactory));
            }

            _formatters    = formatters;
            _readerFactory = readerFactory.CreateReader;

            _logger = loggerFactory?.CreateLogger <DynamicDtoModelBinder>() ?? NullLogger <DynamicDtoModelBinder> .Instance;

            _options    = options;
            _dtoBuilder = dynamicDtoTypeBuilder;
        }
 /// <summary>
 /// Creates a new <see cref="DynamicDtoModelBinder"/>.
 /// </summary>
 /// <param name="formatters">The list of <see cref="IInputFormatter"/>.</param>
 /// <param name="readerFactory">
 /// The <see cref="IHttpRequestStreamReaderFactory"/>, used to create <see cref="System.IO.TextReader"/>
 /// instances for reading the request body.
 /// </param>
 /// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
 /// <param name="dynamicDtoTypeBuilder">Dynamic DTO builder</param>
 public DynamicDtoModelBinder(
     IList <IInputFormatter> formatters,
     IHttpRequestStreamReaderFactory readerFactory,
     ILoggerFactory?loggerFactory,
     IDynamicDtoTypeBuilder dynamicDtoTypeBuilder)
     : this(formatters, readerFactory, loggerFactory, options : null, dynamicDtoTypeBuilder)
 {
 }
Beispiel #3
0
        /// <summary>
        /// Creates a new <see cref="DynamicDtoBinderProvider"/>.
        /// </summary>
        /// <param name="formatters">The list of <see cref="IInputFormatter"/>.</param>
        /// <param name="readerFactory">The <see cref="IHttpRequestStreamReaderFactory"/>.</param>
        /// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
        /// <param name="options">The <see cref="MvcOptions"/>.</param>
        public DynamicDtoBinderProvider(
            IList <IInputFormatter> formatters,
            IHttpRequestStreamReaderFactory readerFactory,
            ILoggerFactory loggerFactory,
            MvcOptions?options,
            IDynamicDtoTypeBuilder dtoBuilder)
        {
            if (formatters == null)
            {
                throw new ArgumentNullException(nameof(formatters));
            }

            if (readerFactory == null)
            {
                throw new ArgumentNullException(nameof(readerFactory));
            }

            _formatters    = formatters;
            _readerFactory = readerFactory;
            _loggerFactory = loggerFactory;
            _options       = options;
            _dtoBuilder    = dtoBuilder;
        }
 private static DynamicDtoModelBinder CreateBinder(IList <IInputFormatter> formatters, MvcOptions mvcOptions, IDynamicDtoTypeBuilder dtoBuilder)
 {
     return(new DynamicDtoModelBinder(formatters, new TestHttpRequestStreamReaderFactory(), NullLoggerFactory.Instance, mvcOptions, dtoBuilder));
 }
        private static DynamicDtoModelBinder CreateBinder(IList <IInputFormatter> formatters, IDynamicDtoTypeBuilder dtoBuilder)
        {
            var options = new MvcOptions();
            var binder  = CreateBinder(formatters, options, dtoBuilder);

            //binder.AllowEmptyBody = treatEmptyInputAsDefaultValueOption;

            return(binder);
        }