Поиск ресурса для перечислений - PullRequest
1 голос
/ 06 марта 2012
public enum WeightGoalStatus
{
    InProgress,
    Failed,
    Succeded
}

public static class WeightGoalStatusExtensions
{
    public static string ToLocalizedString(this WeightGoalStatus status)
    {
        return "Localizedstring";//should be code that queries a resource based on the value of the enum
    }
}

Возможно ли это? также. отличная идея? это в основном для бритвы, что мне нужно, чтобы этот Resup lookup.cant показывал пользователю «INProgress».

Ответы [ 4 ]

2 голосов
/ 06 марта 2012

Легко. И мы на самом деле делаем именно это.

public static class WeightGoalStatusExtensions
{
    public static string ToLocalizedString(this WeightGoalStatus status)
    {
        switch (status)
        {
           case WeightGoalStatus.InProgress
              return Resources.WeightGoalStatus.InProgress_ToLocalizedString;
           // others
        }
    }
}

Просто создайте файл ресурсов, как обычно, не забудьте установить CustomTool в ResXFileCodeGenerator.

Кроме того, убедитесь, что вы правильно установили информацию о культуре.

1 голос
/ 06 марта 2012

Вы можете попробовать с TypeConverter . Полный пример здесь .

0 голосов
/ 11 ноября 2012

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

ResourceManager rm = new ResourceManager ("ApplicationName.App_LocalResources.Enums", Assembly.GetExecutingAssembly ());

string LangEnum = rm.GetString (e_Audits.ToString ());

0 голосов
/ 06 марта 2012

Это будет работать, и я рассмотрел бы этот чистый код.

Альтернатива: создайте файл ресурсов с ключами, такими как «Enums.WeightGoalStatus.InProgress», и найдите значения в этом файле ресурсов с помощью динамического ключа. Это сэкономит вам немного кода. Вы также можете использовать статический словарь в этом отношении, хотя существующая инфраструктура ресурсов довольно хороша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...