以下のような列挙名にスペースを入れるヘルパーメソッドがあります。
public static string GetListItemString(Enum listItem)
{
string result = string.Empty;
#region ELegalStatus
if (listItem is ELegalStatus)
{
switch ((ELegalStatus) listItem)
{
case ELegalStatus.PrivateLimited:
result = "Private Limited";
break;
case ELegalStatus.PublicLimited:
result = "Public Limited";
break;
}
}
#endregion
#region ERegion
if (listItem is ERegion)
{
switch ((ERegion) listItem)
{
case ERegion.EnglandandWales:
result = "England and Wales";
break;
case ERegion.NorthernIreland:
result = "Northern Ireland";
break;
case ERegion.Scotland:
result = "Scotland";
break;
}
}
#endregion
return result;
}
そして、列挙型をリストに変換するメソッドを作成中です。これは次のとおりです。
public static object EnumToList<T>()
{
Type enumType = typeof (T);
// Can't use type constraints on value types, so have to do check like this
if (enumType.BaseType != typeof (Enum))
{
throw new ArgumentException("T must be of type System.Enum");
}
Array enumValArray = Enum.GetValues(enumType);
foreach (var name in enumValArray)
{
var y = Enum.Parse(enumType, name.ToString().Trim(), true);
var x = ListHelper.GetListItemString(y);
}
return null;
}
上記のメソッドでは、ジェネリック列挙型のすべての名前/値が配列に読み込まれるときに、それぞれを反復処理し、メソッド 'GetListItemString' を呼び出して、名前の適切な間隔のバージョンを取得したいと思います。
ただし、「GetListItemString」メソッドは「Enum」タイプのみを受け入れるため、コンパイルされていません。
列挙型の名前/値を繰り返し処理しているときに、このメソッドに必要なパラメーターを渡す方法がわかりません。
誰か助けてくれませんか?
更新:私はすでに var x = ListHelper.GetListItemString((Enum) y); を使用してみました。
ただし、「EnumToList」メソッドが EnumToList() を使用して呼び出された場合、x の値は常に空です。