验证启用/禁用类属性

时间:2013-09-09 09:03:58

标签: c# .net oop

对不起标题,我不知道该怎么用于此问题。

问题是我正在使用属性&在我的C#应用​​程序中验证实现的反射是这样的。

public class foo : validationBase
{
    [RequiredAttribute("id is required")]
    public int id { get; set; }
    [RequiredAttribute("name is required")]
    public string name { get; set; }

    void save()
    {
       this.IsValid();
       //some code
    }
    void update()
    {
       this.IsValid();
       //some code
    }
    void delete()
    {
       // Need some magic here to ignore name attribute's required validation as only id 
       // is needed for delete operation
       this.IsValid();

       //some code
    }
}

正如您在删除操作中看到的那样,我不想验证name属性所需的验证,注意,单个属性可能还有一些验证属性,可能要求一个属性的验证不应该触发,但其他属性

请为您提供解决此问题的意见。

1 个答案:

答案 0 :(得分:0)

使用可标记的枚举,并将其传递并在IsValid()中进行检查。如果需要验证操作,请验证它。像这样的事情:

    public sealed class RequiredAttributeAttribute : Attribute
    {
        private Operation _Operations = Operation.Insert | Operation.Update;
        public Operation Operations
        {
            get { return this._Operations; }
            set { this._Operations = value; }
        }

        public string ErrorMessage { get; set; }
    }

    [Flags]
    public enum Operation
    {
        Insert = 2,
        Update = 4,
        Delete = 6
    }

然后验证这样的道具:

        void delete()
        {
            this.IsValid(Operation.Delete);
        }


        public bool IsValid(Operation operation)
        {
            //...
        }