构造函数链接中的占位符?
Placeholder in constructor chaining?
我正在经历一个material,自定义验证逻辑的代码如下:-
public class MaxAttribute : ValidationAttribute
{
public MaxAttribute(int maxWords) : base("{0} has too many words.")
{
_maxWords = maxWords;
}
public override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if(value != null)
{
var valueAsString = value.ToString();
if(valueAsString.Split(' ').Length > _maxWords)
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}
}
return ValidationResult.Success;
}
private readonly int _maxWords;
}
它说,
The placeholder exists the call to the inherited FormatErrorMessage method, will automatically format the string using the display name of the property."
我无法想象流程会怎样?
我所知道的是当我输入这个时说,
[MaxWords(10)]
public string Name{get;set}
将调用 MaxWordsAttribute(int maxWords) 构造函数,这将调用基础构造函数 :base({0}...)
何时以及如何调用 FormatErrorMessage 将填充占位符?
要查看的地方是对 FormatErrorMessage
的调用:这是构造错误消息的地方。所以 let's take a look:
public virtual string FormatErrorMessage(string name) =>
string.Format(CultureInfo.CurrentCulture, ErrorMessageString, name);
ErrorMessageString
是您传递给基本构造函数的字符串(在 slightly roundabout way 中)。
我正在经历一个material,自定义验证逻辑的代码如下:-
public class MaxAttribute : ValidationAttribute
{
public MaxAttribute(int maxWords) : base("{0} has too many words.")
{
_maxWords = maxWords;
}
public override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if(value != null)
{
var valueAsString = value.ToString();
if(valueAsString.Split(' ').Length > _maxWords)
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}
}
return ValidationResult.Success;
}
private readonly int _maxWords;
}
它说,
The placeholder exists the call to the inherited FormatErrorMessage method, will automatically format the string using the display name of the property."
我无法想象流程会怎样? 我所知道的是当我输入这个时说,
[MaxWords(10)]
public string Name{get;set}
将调用 MaxWordsAttribute(int maxWords) 构造函数,这将调用基础构造函数 :base({0}...) 何时以及如何调用 FormatErrorMessage 将填充占位符?
要查看的地方是对 FormatErrorMessage
的调用:这是构造错误消息的地方。所以 let's take a look:
public virtual string FormatErrorMessage(string name) => string.Format(CultureInfo.CurrentCulture, ErrorMessageString, name);
ErrorMessageString
是您传递给基本构造函数的字符串(在 slightly roundabout way 中)。