Как наследовать файлы ресурсов (resx)

Представьте, что вы работаете над проектом .Net 4.0, который состоит из сотен сборок, каждая из которых имеет свой собственный файл ресурсов (.resx) для локализации. Доступ к локализованным строкам осуществляется из C # через классы, автоматически сгенерированные с помощью ResXFileCodeGenerator (который создает файл «ResourceFile.Designer.cs»): string test = ResourceFile.TestString;

Каждая сборка имеет локализованные строки, относящиеся к это, но есть строки, общие для всех сборок. Вы говорите себе, что было бы неплохо иметь эти «общие строки» в «родительском» файле ресурсов, к которым код будет откатываться, если ключ ресурса не доступен в «локальном» файле ресурсов. Затем вы говорите: «Эй, здесь может работать наследование». И действительно, сделать что-то подобное в автоматически созданном файле дизайнера действительно работает: внутренний класс ResourceFile: ParentResourceFile То есть строки, не определенные в ResourceFile , но определенные в ParentResourceFile ,по-прежнему можно получить доступ с помощью ResourceFile.StringInParentFile .

Но что-то в заголовке файла дизайнера вас беспокоит: « Изменения в этом файле могут вызвать некорректное поведение, и будет утерян, если код регенерируется . "Кроме того, вы знаете, что использование автоматически созданных файлов дизайнера не одобряется. Итак, вы приходите сюда и спрашиваете:

  • Когда ResXFileCodeGenerator генерирует / регенерирует конструктор класс?
  • Есть ли способ отключить автогенерацию?
  • Будет ли у нас отказаться от преимуществ ResXFileCodeGenerator и реализовать наши собственная обработка ResourceManager?

И вы говорите «спасибо».

10
задан Fueled 29 July 2011 в 14:39
поделиться