関連: 列挙型属性から列挙型を取得
列挙型とそれに関連付けられたローカライズされた文字列値を何かにバインドするための最も保守しやすい方法が必要です。
列挙型とクラスを同じファイルに貼り付けると、ある程度安全だと感じますが、もっと良い方法があると思います。また、列挙型の名前をリソースの文字列名と同じにすることも検討しましたが、それを強制するために常にここにいるとは限りません。
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;
}
}
}