Сценарий
Настольное приложение .NET / WPF должно быть локализовано (или в терминах MS глобализировано ) на язык, отличный от английского. То есть пользовательский интерфейс должен быть полностью адаптирован (ярлыки, значки, ...).
Записи файла журнала, записи журнала аудита и другие выходные данные приложения, однако, должен оставаться на английском языке, чтобы англоязычный обслуживающий / вспомогательный персонал мог его просмотреть. Они не говорят по-французски или по-китайски.
Приложение использует файлы RESX для выполнения локализации.
Блок проверки библиотеки предприятия используется для проверки бизнес-правил на объектной модели.
Теперь предположим, что существует служба, которая проверяет свои заданные аргументы объектной модели перед выполнением реальной бизнес-логики. При некоторых обстоятельствах он получает недопустимые аргументы объектной модели, но продолжает выполнение с максимальной отдачей. Однако предоставление недопустимых данных объектной модели должно регистрироваться в журнале аудита и в файле журнала.
Пример службы, использующей блок проверки.
public class Service : IService
{
public void MyMethod(MyObjectModelObject obj)
{
Validator validator = ValidationFactory.CreateValidator(typeof(MyObjectModelObject));
ValidationResults results = validator.Validate(this);
// !!! The messages in the validation results are now already localized to CurrentCulture.
// ... build a log message: msg
if (results.Count > 0)
{
Logger.Log(msg);
}
}
}
Как указано в комментарии к коду, когда вы вызываете Validate () на валидаторе EnterpriseLibrary, Сообщения проверки уже локализованы на французский, и у вас нет возможности записать их, например, в файл журнала на английском языке.
В других областях нашего приложения мы используем класс сообщений, который инкапсулирует идентификатор ресурса и параметры, пока мы не уверены, в какой культуре мы хотим использовать разрешение фактического строкового значения. Вы можете назвать это отложенным разрешением ресурса.
Есть идеи, как внедрить аналогичный механизм в блок валидации Enterprise Library? Идеи до сих пор:
Спасибо за Ваша помощь и общие идеи!