using System;
namespace Csla.Validation
{
  /// 
  /// Tracks all information for a rule.
  /// 
  internal interface IRuleMethod
  {
    /// 
    /// Gets the priority of the rule method.
    /// 
    /// The priority value.
    /// 
    /// Priorities are processed in descending
    /// order, so priority 0 is processed
    /// before priority 1, etc.
    int Priority { get;}
    /// 
    /// Gets the name of the rule.
    /// 
    /// 
    /// The rule's name must be unique and is used
    /// to identify a broken rule in the BrokenRules
    /// collection.
    /// 
    string RuleName { get;}
    /// 
    /// Returns the name of the field, property or column
    /// to which the rule applies.
    /// 
    RuleArgs RuleArgs { get;}
    /// 
    /// Invokes the rule to validate the data.
    /// 
    /// 
    ///  if the data is valid, 
    ///  if the data is invalid.
    /// 
    bool Invoke(object target);
  }
}