如果属性使用注释属性,为什么资源库必须为空

本文关键字:属性 资源库 注释 如果 为什么 | 更新日期: 2023-09-27 17:57:22

我想使用setter自动更正值,并且也想使用RequiredAttribute。但在这种情况下,RequiredAttribute 不起作用,因为资源库不为空。那么,为什么二传手是空的呢?

    [Required(AllowEmptyStrings = false, ErrorMessage = "The Name cannot be empty. Please correct.")]
    public String Name //{get; set;} <- Required works fine...
    {
        get { return _name; }
        set // <- Required did not work...
        {
            String setValue = Regex.Replace(value, @"^'d+", "");
            setValue = Regex.Replace(setValue, @"[^a-zA-Z0-9_]+", "_");
            _name = setValue;
        }
    }

如果属性使用注释属性,为什么资源库必须为空

你的假设实际上是不正确的。 您可以使用具有必需属性的自定义资源库。

void Main()
{
    var test = new Test();
    Validator.ValidateObject(test, new ValidationContext(test));    
}
public class Test 
{
    private string _name;
    [Required(AllowEmptyStrings = false, ErrorMessage = "The Name cannot be empty. Please correct.")]
    public String Name
    {
        get { return _name; }
        set 
        {
            String setValue = Regex.Replace(value, @"^'d+", "");
            setValue = Regex.Replace(setValue, @"[^a-zA-Z0-9_]+", "_");
            _name = setValue;
        }
    }
}

此快速而脏的测试会引发"必需"验证消息。