/// <summary> /// Registers the default adapter type for objects which implement /// <see cref="IValidatableObject"/>. The adapter type must derive from /// <see cref="ModelValidator"/> and it must contain a public constructor /// which takes two parameters of types <see cref="ModelMetadata"/> and /// <see cref="HttpActionContext"/>. /// </summary> public void RegisterDefaultValidatableObjectAdapter(Type adapterType) { ValidateValidatableAdapterType(adapterType); ConstructorInfo constructor = GetValidatableAdapterConstructor(adapterType); DefaultValidatableFactory = context => (ModelValidator)constructor.Invoke(new object[] { context }); }
private static void ValidateValidatableFactory(DataAnnotationsValidatableObjectAdapterFactory factory) { if (factory == null) { throw Error.ArgumentNull("factory"); } }
public void RegisterValidatableObjectAdapterFactoryGuardClauses() { var provider = new DataAnnotationsModelValidatorProvider(); DataAnnotationsValidatableObjectAdapterFactory factory = (context) => null; // Attribute type cannot be null Assert.ThrowsArgumentNull( () => provider.RegisterValidatableObjectAdapterFactory(null, factory), "modelType" ); // Factory cannot be null Assert.ThrowsArgumentNull( () => provider.RegisterValidatableObjectAdapterFactory( typeof(MyValidatableClass), null ), "factory" ); // Validation attribute must derive from ValidationAttribute Assert.ThrowsArgument( () => provider.RegisterValidatableObjectAdapterFactory(typeof(object), factory), "modelType", "The type Object must derive from IValidatableObject" ); }
/// <summary> /// Registers an adapter factory for the given <paramref name="modelType"/>, which must /// implement <see cref="IValidatableObject"/>. /// </summary> public void RegisterValidatableObjectAdapterFactory(Type modelType, DataAnnotationsValidatableObjectAdapterFactory factory) { ValidateValidatableModelType(modelType); ValidateValidatableFactory(factory); ValidatableFactories[modelType] = factory; }
static void ValidateValidatableFactory(DataAnnotationsValidatableObjectAdapterFactory factory) { if (factory is null) { throw new ArgumentNullException(nameof(factory)); } }
public void RegisterDefaultValidatableObjectAdapterFactory() { var oldFactory = DataAnnotationsModelValidatorProvider.DefaultValidatableFactory; try { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForType( () => null, typeof(MyValidatableClass) ); var context = new ControllerContext(); ModelValidator validator = new Mock <ModelValidator>(metadata, context).Object; DataAnnotationsValidatableObjectAdapterFactory factory = delegate { return(validator); }; DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory( factory ); // Act var result = new DataAnnotationsModelValidatorProvider() .GetValidators(metadata, context) .Single(); // Assert Assert.Same(validator, result); } finally { DataAnnotationsModelValidatorProvider.DefaultValidatableFactory = oldFactory; } }
public void RegisterValidatableObjectAdapterFactoryGuardClauses() { DataAnnotationsValidatableObjectAdapterFactory factory = (metadata, context) => null; // Attribute type cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory( null, factory ), "modelType" ); // Factory cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory( typeof(MyValidatableClass), null ), "factory" ); // Validation attribute must derive from ValidationAttribute Assert.Throws <ArgumentException>( () => DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory( typeof(object), factory ), "The type System.Object must derive from System.ComponentModel.DataAnnotations.IValidatableObject\r\nParameter name: modelType" ); }
public void RegisterValidatableObjectAdapterFactory() { var oldFactories = DataAnnotationsModelValidatorProvider.ValidatableFactories; try { // Arrange DataAnnotationsModelValidatorProvider.ValidatableFactories = new Dictionary <Type, DataAnnotationsValidatableObjectAdapterFactory>(); DataAnnotationsValidatableObjectAdapterFactory factory = delegate { return(null); }; // Act DataAnnotationsModelValidatorProvider.RegisterValidatableObjectAdapterFactory( typeof(MyValidatableClass), factory ); // Assert var type = DataAnnotationsModelValidatorProvider.ValidatableFactories.Keys.Single(); Assert.Equal(typeof(MyValidatableClass), type); Assert.Same( factory, DataAnnotationsModelValidatorProvider.ValidatableFactories.Values.Single() ); } finally { DataAnnotationsModelValidatorProvider.ValidatableFactories = oldFactories; } }
/// <summary> /// Registers the default adapter factory for objects which implement /// <see cref="IValidatableObject"/>. /// </summary> public static void RegisterDefaultValidatableObjectAdapterFactory( DataAnnotationsValidatableObjectAdapterFactory factory ) { ValidateValidatableFactory(factory); DefaultValidatableFactory = factory; }
/// <summary> /// Registers an adapter factory for the given <paramref name="modelType"/>, which must /// implement <see cref="IValidatableObject"/>. /// </summary> public static void RegisterValidatableObjectAdapterFactory(Type modelType, DataAnnotationsValidatableObjectAdapterFactory factory) { ValidateValidatableModelType(modelType); ValidateValidatableFactory(factory); _adaptersLock.EnterWriteLock(); try { ValidatableFactories[modelType] = factory; } finally { _adaptersLock.ExitWriteLock(); } }
public void RegisterDefaultValidatableObjectAdapterFactory() { // Arrange var provider = new DataAnnotationsModelValidatorProvider(); var metadata = _metadataProvider.GetMetadataForType(() => null, typeof(MyValidatableClass)); ModelValidator validator = new Mock <ModelValidator>(metadata, _noValidatorProviders).Object; DataAnnotationsValidatableObjectAdapterFactory factory = delegate { return(validator); }; provider.RegisterDefaultValidatableObjectAdapterFactory(factory); // Act var result = provider.GetValidators(metadata, _noValidatorProviders).Single(); // Assert Assert.Same(validator, result); }
private static void ValidateValidatableFactory(DataAnnotationsValidatableObjectAdapterFactory factory) { if (factory == null) { throw new ArgumentNullException("factory"); } }
/// <summary> /// Registers the default adapter factory for objects which implement /// <see cref="IValidatableObject"/>. /// </summary> public static void RegisterDefaultValidatableObjectAdapterFactory(DataAnnotationsValidatableObjectAdapterFactory factory) { ValidateValidatableFactory(factory); DefaultValidatableFactory = factory; }
/// <summary> /// Registers the default adapter type for objects which implement /// <see cref="IValidatableObject"/>. The adapter type must derive from /// <see cref="ModelValidator"/> and it must contain a public constructor /// which takes two parameters of types <see cref="ModelMetadata"/> and /// <see cref="ControllerContext"/>. /// </summary> public static void RegisterDefaultValidatableObjectAdapter(Type adapterType) { ValidateValidatableAdapterType(adapterType); ConstructorInfo constructor = GetValidatableAdapterConstructor(adapterType); DefaultValidatableFactory = (metadata, context) => (ModelValidator)constructor.Invoke(new object[] { metadata, context }); }
/// <summary> /// Registers an adapter factory for the given <see cref="modelType"/>, which must /// implement <see cref="IValidatableObject"/>. /// </summary> public static void RegisterValidatableObjectAdapterFactory(Type modelType, DataAnnotationsValidatableObjectAdapterFactory factory) { ValidateValidatableModelType(modelType); ValidateValidatableFactory(factory); _adaptersLock.EnterWriteLock(); try { ValidatableFactories[modelType] = factory; } finally { _adaptersLock.ExitWriteLock(); } }