/// <summary> /// Applies the rules to this instance for the specified property. /// </summary> /// <param name="propertyName">Name of the property.</param> private void ApplyRules(string propertyName) { this.InitializeErrors(); List <object> propertyErrors = rules.Apply((T)this, propertyName).ToList(); if (propertyErrors.Count > 0) { if (this.errors.ContainsKey(propertyName)) { this.errors[propertyName].Clear(); } else { this.errors[propertyName] = new List <object>(); } this.errors[propertyName].AddRange(propertyErrors); this.OnErrorsChanged(propertyName); } else if (this.errors.ContainsKey(propertyName)) { this.errors.Remove(propertyName); this.OnErrorsChanged(propertyName); } }