using System;
namespace Csla.Validation
{
  /// 
  /// Delegate that defines the method signature for all rule handler methods.
  /// 
  /// 
  /// Object containing the data to be validated.
  /// 
  /// 
  /// Parameter used to pass information to and from
  /// the rule method.
  /// 
  /// 
  ///  if the rule was satisfied.
  /// 
  /// 
  /// 
  /// When implementing a rule handler, you must conform to the method signature
  /// defined by this delegate. You should also apply the Description attribute
  /// to your method to provide a meaningful description for your rule.
  /// 
  /// The method implementing the rule must return 
  ///  if the data is valid and
  /// return  if the data is invalid.
  /// 
  /// 
  public delegate bool RuleHandler(object target, RuleArgs e);
  /// 
  /// Delegate that defines the method signature for all rule handler methods.
  /// 
  /// Type of the target object.
  /// Type of the arguments parameter.
  /// 
  /// Object containing the data to be validated.
  /// 
  /// 
  /// Parameter used to pass information to and from
  /// the rule method.
  /// 
  /// 
  ///  if the rule was satisfied.
  /// 
  /// 
  /// 
  /// When implementing a rule handler, you must conform to the method signature
  /// defined by this delegate. You should also apply the Description attribute
  /// to your method to provide a meaningful description for your rule.
  /// 
  /// The method implementing the rule must return 
  ///  if the data is valid and
  /// return  if the data is invalid.
  /// 
  /// 
  public delegate bool RuleHandler(T target, R e) where R : RuleArgs;
}