다양한 형식으로 내보낼 수있는 몇 가지 항목이 있습니다.변환 및 열거가 필요한 열거 형 대체
[Flags]
public enum ExportFormat
{
None = 0x0,
Csv = 0x1,
Tsv = 0x2,
Excel = 0x4,
All = Excel | Csv | Tsv
}
문제는 이러한 열거 할 수 있어야한다는 것입니다 그리고 그들은 또한 UI의 번역 또는 설명을 필요 : 현재 우리는 다음과 같이 열거으로 표시 이러한 형식을 가지고있다. 현재 저는 두 가지 확장 메소드를 작성하여이를 해결했습니다. 그들은 작동하지만, 나는 그 (것)들 또는 해결책을 전혀 진짜로 좋아하지 않는다 ... 냄새 나는 종류 느낀다. 문제는 내가 어떻게 더 잘할 수 있는지 정말로 모른다는 것이다. 누구든지 좋은 대안이 있습니까? 이 두 가지 방법은 다음과 같습니다.
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