0

以下のような列挙名にスペースを入れるヘルパーメソッドがあります。

 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 の値は常に空です。

4

1 に答える 1

1

の戻り値の型は何らかの理由で であるため、 fromobjectからにキャストするだけです。EnumParseobject

var x = ListHelper.GetListItemString((Enum) y);

また、一般的な制約の問題の回避策を提供するUnconstrained Melody プロジェクトをチェックアウト (および場合によっては変更) することもできます。

于 2013-02-19T16:08:26.480 に答える