-
-
Save LSTANCZYK/964b568de8bad60c73cbd07d5ab6ca54 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public sealed class PropertiesMustMatchAttribute : ValidationAttribute | |
{ | |
private const string _defaultErrorMessage = "'{0}' and '{1}' do not match."; | |
private readonly object _typeId = new object(); | |
public PropertiesMustMatchAttribute(string originalProperty, string confirmProperty) | |
: base(_defaultErrorMessage) | |
{ | |
OriginalProperty = originalProperty; | |
ConfirmProperty = confirmProperty; | |
} | |
public string ConfirmProperty { get; private set; } | |
public string OriginalProperty { get; private set; } | |
public override object TypeId | |
{ | |
get | |
{ | |
return _typeId; | |
} | |
} | |
public override string FormatErrorMessage(string name) | |
{ | |
return String.Format(CultureInfo.CurrentUICulture, ErrorMessageString, | |
OriginalProperty, ConfirmProperty); | |
} | |
public override bool IsValid(object value) | |
{ | |
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); | |
object originalValue = properties.Find(OriginalProperty, true /* ignoreCase */).GetValue(value); | |
object confirmValue = properties.Find(ConfirmProperty, true /* ignoreCase */).GetValue(value); | |
return Object.Equals(originalValue, confirmValue); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment