Могу ли я хранить сообщения об ошибках аннотации данных во внешнем файле? - PullRequest
1 голос
/ 17 декабря 2010

Я использую аннотации данных для проверки свойств моего класса.Появилось требование хранить сообщения об ошибках проверки во внешнем файле, из которого они будут загружены в память во время выполнения.

Я думал, что смогу загрузить набор сообщений об ошибках из файла XML, а затем установить ErrorMessage: = [StringVariableHere] ... но, очевидно, это не работает каквам нужно использовать постоянное значение.

Если я сохраню сообщения об ошибках в файле Resource.resx, то эти сообщения об ошибках компилируются в проект и не могут быть загружены во время выполнения - или я ошибаюсь?

Может кто-нибудь посоветовать мне решение?

1 Ответ

2 голосов
/ 17 декабря 2010

Вы можете получить атрибуты аннотации данных и предоставить свой собственный источник сообщений.

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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...