如何解决构造函数链中的占位符?
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;
}
它说,
占位符存在调用继承的FormatErrorMessage方法,将使用属性的显示名称自动格式化字符串。"
我无法想象流程会是什么样子? 我只知道当我输入这个词时,
[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 中)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。