Назначение типа времени компиляции - PullRequest
1 голос
/ 11 января 2011

Я работаю над пользовательской платформой проверки для моего приложения WPF / C #.

Что я хочу сделать, так это извлечь строки из файла ресурсов, в котором объявлена ​​модель представления, но в фактическойкод проверки сам.Эта конкретная строка является тем же ресурсом, который используется меткой в ​​форме пользовательского интерфейса редактирования.

Мой код отлично работает со следующим синтаксисом -

    [Required(TypeRes = typeof(Resources))]
    public string RequiredStringWithDesc { get; set; }

Но что я "m ищет то, что выглядит синтаксически чище. Я пытался использовать

    const Type LocalRes =  typeof(Resources);
    [Required(TypeRes = LocalRes)]
    public string RequiredStringWithDesc { get; set; }

Любые предложения по более простому синтаксису? Старый оператор C ++ DEFINE здесь будет работать хорошо.

К вашему сведению: причины перехода на такую ​​большую работу связаны с тем, как мы проводим локализацию и создание пользовательского интерфейса.


РЕДАКТИРОВАТЬ Чтобы ответить на пару вопросов опочему мы это делаем? Мы будем использовать ту же строку из файла ресурсов для -

  1. На экране редактирования это метка для идентификации поля.
  2. В модели данных, если есть ошибка проверки, мы используем ее для правильной маркировки проблемы в файле журнала.
  3. В модели представления мы повторно используем эту метку в сообщении об ошибке проверки, чтобы подтвердить, гдепроблема для пользователя.
  4. Это часть системы проверки в реальном времени, и некоторые из режимов отказов непосредственно связаны с этими полями данных.Таким образом, мы можем легко получить правильно локализованную метку для применения к сообщениям о сбоях во время выполнения

Общая концепция заключается в том, что это упрощает представление согласованных сообщений пользователю, создавая их только один раз.Что касается атрибутов проверки (и этого вопроса), мы должны иметь возможность получить тип файла Resource для загрузки правильного сообщения.

1 Ответ

0 голосов
/ 11 января 2011

Создайте новый класс атрибута, который наследуется от RequiredAttribute, и установите значения по умолчанию.

public class LocalizedRequiredAttribute : RequiredAttribute {
    public LocalizedRequiredAttribute() { /* TypeDef = typeof(Resources);*/ }
}

public class MyModel {
    [LocalizedRequired]
    public string RequiredStringWithDesc { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...