Запретить (вручную вводить) удаление кода в Resources.Designer - PullRequest
3 голосов
/ 31 мая 2010

Я добавил небольшую функцию в Resources.Designer.cs, и она отлично работает, проблема в том, что когда я добавляю или удаляю что-то из Resources.resx, эта функция всегда удаляется, есть ли индикатор, который я мог бы поставить или вообще обойти это?

Спасибо!


Это действительно простой метод, используемый в качестве индексатора.

internal static string Keys(string key) 
{ 
   return ResourceManager.GetString(key, resourceCulture); 
} 

Я сделал это, потому что вы не можете сделать Properties.Resources и затем конкатенировать значение. Расширение может работать, однако я попытался, и это становится модным, потому что это все статический метод, и вы не хотите создавать его экземпляр.

Идеи

Ответы [ 2 ]

4 голосов
/ 01 июня 2010

Кодовая часть файла resx автоматически генерируется инструментом PublicResXFileCodeGenerator (или InternalResXFileCodeGenerator, в зависимости от того, для чего вы установили видимость файла ресурсов). В верхней части файла написано:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

Если вам действительно нужно обойти это, вам нужно будет создать подкласс PublicResXFileCodeGenerator (инструмент, который VS запускает для генерации кода resx), и реализовать свой собственный инструмент, который Visual Studio может запускать каждый раз, когда он хочет обновить файл ресурсов.

Переопределение инструмента позволит вам генерировать частичные классы, а затем вы сможете сохранить свой настраиваемый код в другом файле .cs где-то как другой частичный класс для класса файлов ресурсов.

Честно говоря, возможно, есть более простые подходы. Какой пользовательский код вы реализуете? Вы можете просто превратить это в методы расширения? Немного больше деталей может помочь нам указать вам правильное направление.

0 голосов
/ 01 июня 2010

В данный момент я не могу проверить, но если автоматически сгенерированный класс является частичным классом, создайте соответствующий частичный класс в другом файле .cs и добавьте любые поправки к этому

редактировать

подтвердил, что класс конструктора для resx не является частичным (кажется, что это должен быть сгенерированный файл?), Поэтому метод расширения, вероятно, является лучшим.

...