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

C# 我可以将数据批注错误消息存储在外部文件中吗?,c#,vb.net,winforms,annotations,C#,Vb.net,Winforms,Annotations,我正在使用数据注释来验证我的类属性。出现了将验证错误消息存储在外部文件中的需求,在运行时将从该文件加载到内存中 我想我可以从XML文件中加载一组错误消息,然后设置ErrorMessage:=[StringVariableHere]。。。但显然这不起作用,因为需要使用一个常量值 如果我将错误消息存储在Resource.resx文件中,那么这些错误消息将编译到项目中,并且无法在运行时加载,或者我错了 有人能给我一个解决方案吗?您可以派生数据注释属性,并为消息提供自己的来源 public class

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

我想我可以从XML文件中加载一组错误消息,然后设置ErrorMessage:=[StringVariableHere]。。。但显然这不起作用,因为需要使用一个常量值

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


有人能给我一个解决方案吗?

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

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);
    }
}

我在我的博客中描述了这项技术(我的目标是获得本地化的错误消息,但概念是一样的):

嗨,jgauffin,这是完美的,看起来很像我需要的,除了一件事。。。它只适用于.NETFramework4。我应该在我原来的帖子中提到,我被限制使用3.5。。。我可以在代码中更改什么以使其工作?谢谢好啊删除该参数并检查
名称
参数包含的内容。你可以用它来代替。