private HttpParameterBinding DetermineBinding(HttpParameterDescriptor parameter) { HttpConfiguration config = parameter.Configuration; var attr = new ModelBinderAttribute(); // use default settings ModelBinderProvider provider = attr.GetModelBinderProvider(config); IModelBinder binder = provider.GetBinder(config, parameter.ParameterType); // Alternatively, we could put this ValueProviderFactory in the global config. var valueProviderFactories = new List<ValueProviderFactory>(attr.GetValueProviderFactories(config)) { new BodyValueProviderFactory() }; return new ModelBinderParameterBinding(parameter, binder, valueProviderFactories); }
private void BinderType_From_DependencyResolver_Impl(IDependencyResolver resolver) { // To test dependency resolver, the registered type and actual type should be different. HttpConfiguration config = new HttpConfiguration(); var mockDependencyResolver = new Mock <IDependencyResolver>(); mockDependencyResolver.Setup(r => r.GetService(typeof(CustomModelBinderProvider))).Returns(new SecondCustomModelBinderProvider()); config.DependencyResolver = mockDependencyResolver.Object; ModelBinderAttribute attr = new ModelBinderAttribute(typeof(CustomModelBinderProvider)); ModelBinderProvider provider = attr.GetModelBinderProvider(config); Assert.IsType <SecondCustomModelBinderProvider>(provider); }
public void BinderType_From_DependencyResolver_ReleasedWhenConfigIsDisposed() { // Arrange HttpConfiguration config = new HttpConfiguration(); var mockDependencyResolver = new Mock <IDependencyResolver>(); SecondCustomModelBinderProvider provider = new SecondCustomModelBinderProvider(); mockDependencyResolver.Setup(r => r.GetService(typeof(CustomModelBinderProvider))).Returns(provider); config.DependencyResolver = mockDependencyResolver.Object; ModelBinderAttribute attr = new ModelBinderAttribute(typeof(CustomModelBinderProvider)); attr.GetModelBinderProvider(config); // Act config.Dispose(); // Assert mockDependencyResolver.Verify(dr => dr.Dispose(), Times.Once()); }