以下是特性 StringLengthAttribute 的代码实现:

[AttributeUsage(AttributeTargets.Property)]
public class StringLengthAttribute : AbstractValidateAttribute
{
    private readonly int _maxLength;

    public StringLengthAttribute(int maxLength)
    {
        _maxLength = maxLength;
    }

    public override bool Validate(object value)
    {
        if (value is string str)
        {
            return str.Length <= _maxLength;
        }
        return true; // 非字符串类型默认通过验证
    }
}

使用方式示例:

public class Person
{
    [StringLength(10)]
    public string Name { get; set; } 
}

var person = new Person { Name = 'John' };
var validator = new Validator();
var result = validator.Validate(person);
if (result.IsValid)
{
    Console.WriteLine('Validation passed.');
}
else
{
    Console.WriteLine('Validation failed: ' + result.ErrorMessage);
}

这里使用了一个 Validator 类作为验证器,它的实现可以参考前面的文章“设计一个简单的验证器”。如果 Name 的长度超过 10,验证结果会返回 false。

C# 属性字符串长度验证特性:StringLengthAttribute 实现

原文地址: https://www.cveoy.top/t/topic/nIOC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录