さまざまな形式にエクスポートできるものがあります。現在、我々はこのような列挙型に代表されるこれらのフォーマットを持っている:変換と列挙が必要な列挙型の置換
[Flags]
public enum ExportFormat
{
None = 0x0,
Csv = 0x1,
Tsv = 0x2,
Excel = 0x4,
All = Excel | Csv | Tsv
}
問題は、これらを列挙しなければならないと、彼らはまた、UIの翻訳や説明が必要だということです。現在、私は2つの拡張メソッドを作成してこれを解決しました。彼らはうまくいっていますが、私は本当にそれを好きではありませんし、解決策も全く気に入っていません。問題は、私がこれをより良くする方法を本当に分かっていないことです。誰にも良い選択肢はありますか?これらは、2つの方法です:
public static IEnumerable<ExportFormat> Formats(this ExportFormat exportFormats)
{
foreach (ExportFormat e in Enum.GetValues(typeof (ExportFormat)))
{
if (e == ExportFormat.None || e == ExportFormat.All)
continue;
if ((exportFormats & e) == e)
yield return e;
}
}
public static string Describe(this ExportFormat e)
{
var r = new List<string>();
if ((e & ExportFormat.Csv) == ExportFormat.Csv)
r.Add("Comma Separated Values");
if ((e & ExportFormat.Tsv) == ExportFormat.Tsv)
r.Add("Tab Separated Values");
if ((e & ExportFormat.Excel) == ExportFormat.Excel)
r.Add("Microsoft Excel 2007");
return r.Join(", ");
}
これはおそらくこれを行う方法ですが、私はそれを行うためのよりよい方法が必要であると感じています。どのように私はこれをリファクタリングすることができますか?
これらの文字列もローカライズする必要はありませんか?もしそうなら、それらはリソースファイルに存在しますので、コードに_anywhere_を置く必要はありません。 –
真。しかし、リソースキーを列挙型に接続する何らかの方法がまだ必要です。 – Svish