1
我想創建一個自定義的數據註釋驗證工具,檢查列表中的所有物品是否是唯一的或不是。例如如何將對象傳遞到自定義數據註釋驗證
public class AnyClass{
[Unique]
public List<string> UniqueListOfStrings;
}
現在我唯一的屬性看起來像這樣
public sealed class UniqueAttribute : ValidationAttribute
{
public UniqueAttribute()
: base("The items are not unique")
{
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var listOfValues = (IList<object>)value;
return listOfValues.Count != listOfValues.Distinct().Count()
? new ValidationResult(ErrorMessageString)
: ValidationResult.Success;
}
}
到目前爲止它是好的,但我想在某種意義上屬性更通用的,我可以通過任何一類對象實施IEqualityComparer<T>
。這樣一來我的新IsValid
方法將看起來像
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var listOfValues = (IList<object>)value;
return listOfValues.Count !=
(_comparerClass != null
? listOfValues.Distinct(_comparerClass).Count()
: listOfValues.Distinct().Count())
? new ValidationResult(ErrorMessageString)
: ValidationResult.Success;
}
的問題是,我沒有辦法能夠發送的對象。是否有任何解決方法,以便我可以使用旨在比較對象的comparer類。