This article will show you how to combine type based validation rules with other validations, how to compose them and apply them in different scenarios, adding/removing validations when applied on concrete instances, combining objects of different types and implementing one validation strategy on all.
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace ComposableServices
{
/// <summary>
/// A cloneable version of the wel-known ValidationResult class
/// </summary>
public class ValidationError : ValidationResult, ICloneable
{
public enum eValidationType
{
None= 0,
preCheck,
All
}
private eValidationType _cat = eValidationType.None;
private string _instr;
public eValidationType Category { get{return _cat;} set{_cat = value;} }
public string Instruction { get { return _instr; } set { _instr = value; } }
object ICloneable.Clone()
{
ValidationError myclone = new ValidationError(this.ErrorMessage) { Category = _cat, Instruction = _instr };
return myclone;
}
public ValidationError CloneMe() {
return (ValidationError)((ICloneable)this).Clone();
}
public ValidationError(string ErrorMessage) : base(ErrorMessage){ }
public ValidationError(string ErrorMessage, IEnumerable<String> memberNames) : base(ErrorMessage, memberNames) { }
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.