C# 利用特性(Attribute)实现通用实体类数据合法校验

这篇博客介绍了如何在C#中利用特性(Attribute)实现通用的实体类数据合法校验。通过创建自定义的校验特性基类,然后继承并实现具体的验证逻辑,如检查属性是否为空、字符串长度范围和正则表达式匹配。接着,为实体类扩展了一个验证方法,该方法使用反射遍历并验证所有属性。最后,通过一个Student实体类实例展示了特性的应用和测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用过asp.net mvc 的都应该知道,在实体类上添加一些特性,可以实现后端实体的数据校验,这里简单实现一下

实现原理:利用反射获取实体的每一个属性,并通过属性获取属性上标注的特性,调用特性的Validate方法(此方法自定义的)来验证属性的值是否合法。

1、创建自己的校验特性基类

此类继承了Attribute,表明为一个特性,Validate方法为抽象方法,目的是给实现的子类自己定义自己的Validate方法。error为错误消息提示信息。

    [AttributeUsage(AttributeTargets.Property,AllowMultiple = true)]
    public abstract class BaseAttribute:Attribute
    {
        public virtual string error { get; set; }
        public abstract bool Validate(object value);
    }

2、创建特性类继承自BaseAttribute

这里只简单写3个特性,写法都一样,只是校验方法Validate中的逻辑不一样。

约束属性不能为空:

    /// <summary>
    /// 约束属性不能为空
    /// </summary>
    public class RequiredAttribute : BaseAttribute
    {
        public override string error {
            get
            {
                if (base.error !&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值