Łączenie wartości wyliczeniowej ze zlokalizowanym zasobem łańcuchowym

Związane z:Uzyskaj wyliczenie z atrybutu wyliczenia

Chcę najbardziej utrzymywalnego sposobu powiązania wyliczenia i skojarzenia go z lokalnymi wartościami ciągów.

Jeśli przykleję enum i klasę do tego samego pliku, czuję się trochę bezpieczny, ale muszę założyć, że jest lepszy sposób. Rozważyłem też, że nazwa wyliczenia będzie taka sama jak nazwa łańcucha zasobów, ale obawiam się, że nie zawsze mogę być tutaj, aby to wymusić.

using CR = AcmeCorp.Properties.Resources;

public enum SourceFilterOption
{
    LastNumberOccurences,
    LastNumberWeeks,
    DateRange
    // if you add to this you must update FilterOptions.GetString
}

public class FilterOptions
{
    public Dictionary<SourceFilterOption, String> GetEnumWithResourceString()
    {
        var dict = new Dictionary<SourceFilterOption, String>();
        foreach (SourceFilterOption filter in Enum.GetValues(typeof(SourceFilterOption)))
        {
            dict.Add(filter, GetString(filter));
        }
        return dict;
    }

    public String GetString(SourceFilterOption option)
    {
        switch (option)
        {
            case SourceFilterOption.LastNumberOccurences:
                return CR.LAST_NUMBER_OF_OCCURANCES;
            case SourceFilterOption.LastNumberWeeks:
                return CR.LAST_NUMBER_OF_WEEKS;
            case SourceFilterOption.DateRange:
            default:
                return CR.DATE_RANGE;
        }
    }
}

questionAnswers(5)

yourAnswerToTheQuestion