DisplayName приписывают от Ресурсов?

У меня есть локализованное приложение, и я задаюсь вопросом, возможно ли иметь DisplayName для определенного образцового набора свойств от Ресурса.

Я хотел бы сделать что-то вроде этого:

public class MyModel {
  [Required]
  [DisplayName(Resources.Resources.labelForName)]
  public string name{ get; set; }
}

Но я не могу к нему, как говорится в компиляторе: "Аргументом атрибута должно быть константное выражение, typeof выражение или выражение создания массива типа параметра атрибута" :(

Есть ли какие-либо обходные решения? Я произвожу маркировки вручную, но мне нужны они для вывода блока проверки допустимости!

159
задан Vadim Ovchinnikov 14 May 2018 в 17:36
поделиться

1 ответ

Как насчет написания настраиваемого атрибута:

public class LocalizedDisplayNameAttribute: DisplayNameAttribute
{
    public LocalizedDisplayNameAttribute(string resourceId) 
        : base(GetMessageFromResource(resourceId))
    { }

    private static string GetMessageFromResource(string resourceId)
    {
        // TODO: Return the string from the resource file
    }
}

, который можно было бы использовать следующим образом:

public class MyModel 
{
    [Required]
    [LocalizedDisplayName("labelForName")]
    public string Name { get; set; }
}
109
ответ дан 23 November 2019 в 21:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: