Я видел много вопросов и ответов о сопоставлении строк с перечислениями и наоборот, но как я могу сопоставить серию локализованных строк с перечислениями?
Должен ли я просто создать метод расширения, подобный этому , который возвращает правильную строку из файла ресурсов? Есть ли способ локализовать атрибуты (например, «Описание»), которые используются в решениях, подобных этому ?
Какое решение является предпочтительным - метод расширения или атрибуты. Мне кажется, что это не целевое назначение атрибутов. Фактически, теперь, когда я думаю об этом, если бы я использовал метод расширения, атрибут был бы похож на то, что я бы использовал, чтобы указать ключ в файле ресурсов для локализованной строки, которую я хочу использовать вместо значения перечисления.
РЕДАКТИРОВАТЬ - пример:
Учитывая следующее перечисление,
public enum TransactionTypes {
Cheque = 1,
BankTransfer = 2,
CreditCard = 3
}
Мне нужен способ сопоставления каждого типа локализованной строке. Я начал с метода расширения для перечисления, в котором используется оператор switch и строго типизированные ссылки на файл ресурсов.
Однако метод расширения для каждого перечисления не кажется хорошим решением. Я начал подписываться на this , чтобы создать собственный атрибут для каждого перечисляемого значения. Атрибут имеет базовое имя и ключ для файла ресурсов, содержащего локализованные строки. В приведенном выше перечислении, например, у меня есть это:
...
[EnumResourceAttribute("FinancialTransaction", "Cheque")]
Cheque = 1,
...
Где "FinanacialTransaction" - файл resx, а "Check" - строковый ключ. Я пытаюсь создать служебный метод, которому я мог бы передать любое значение из любого перечисления и заставить его возвращать локализованное строковое представление этого значения, предполагая, что указан пользовательский атрибут. Я просто не могу понять, как получить динамический доступ к файлу ресурса и ключу в нем.