C# 属性字符串长度验证特性:StringLengthAttribute 实现
以下是特性 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。
原文地址: https://www.cveoy.top/t/topic/nIOC 著作权归作者所有。请勿转载和采集!