我可以将数据注释错误消息存储在外部文件中吗?

时间:2010-12-17 20:01:42

标签: c# vb.net winforms annotations

我正在使用数据注释来验证我的类属性。出现了将验证错误消息存储在外部文件中的要求,在运行时它们将从中加载到内存中。

我以为我能够从XML文件中加载一组错误消息,然后设置ErrorMessage:= [StringVariableHere] ...但显然这不能正常工作使用常数值。

如果我将错误消息存储在Resource.resx文件中,那么这些错误消息将被编译到项目中,并且无法在运行时加载 - 或者我错了吗?

有人可以告诉我一个解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以派生数据注释属性并为消息提供自己的来源。

public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
    private string _displayName;

    public RequiredAttribute()
    {
        ErrorMessageResourceName = "Validation_Required";
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        _displayName = validationContext.DisplayName;
        return base.IsValid(value, validationContext);
    }

    public override string FormatErrorMessage(string name)
    {
        //LOOK HERE! ;)
        var msg = GetTheTextHereFromYourSource();

        return string.Format(msg, _displayName);
    }
}

我在博客中描述了这种技术(我的目标是获取本地化的错误消息,但概念是相同的):http://blog.gauffin.org/2010/11/simplified-localization-for-dataannotations/