相关疑难解决方法(0)

编写CompareTo DataAnnotation属性

我有一种情况,我想与字段进行比较(例如,确保开始时间在结束时间之前).我正在使用System.ComponentModel.DataAnnotations属性进行验证.

我的第一个想法是这样的:

public enum CompareToOperation
{
    EqualTo,
    LessThan,
    GreaterThan
}

public class CompareToAttribute : ValidationAttribute
{
    CompareToOperation _Operation;
    IComparable _Comparision;

    public CompareToAttribute(CompareToOperation operation, Func<IComparable> comparison)
    {
       _Operation = operation;
       _Comparision = comparison();
    }

    public override bool IsValid(object value)
    {
    if (!(value is IComparable))
        return false;

    switch (_Operation)
    {
        case CompareToOperation.EqualTo: return _Comparision.Equals(value);
        case CompareToOperation.GreaterThan: return _Comparision.CompareTo(value) == 1;
        case CompareToOperation.LessThan: return _Comparision.CompareTo(value) == -1;
    }

    return false;
    }
}

public class SimpleClass
{
   public DateTime Start {get;set;}
   [CompareTo(CompareToOperation.GreaterThan, …
Run Code Online (Sandbox Code Playgroud)

c# validation data-annotations

9
推荐指数
2
解决办法
9820
查看次数

标签 统计

c# ×1

data-annotations ×1

validation ×1