public T Bind <T>(IHttpRequest request, string name) { var provider = new RequestValueProvider(request); if (!string.IsNullOrEmpty(name)) { var context = new ModelBinderContext(typeof(T), name, "", provider); context.RootBinder = this; foreach (var modelBinder in _binders) { if (modelBinder.CanBind(context)) { return((T)modelBinder.Bind(context)); } } return(default(T)); } if (typeof(IEnumerable).IsAssignableFrom(typeof(T))) { throw new InvalidOperationException("did not expect IEnumerable implementations without a name in the binder."); } var model = Activator.CreateInstance(typeof(T)); foreach (var property in model.GetType().GetProperties()) { var context = new ModelBinderContext(property.PropertyType, property.Name, "", provider); context.RootBinder = this; foreach (var modelBinder in _binders) { if (modelBinder.CanBind(context)) { var value = modelBinder.Bind(context); property.SetValue(model, value, null); break; } } } return((T)model); }
public void Initialize() { _httpRequestMock = new Mock <HttpRequest>(); _requestValueProvider = new RequestValueProvider( typeof(TestRequestDto), _httpRequestMock.Object, CancellationToken.None); }