4

重複の可能性:
T を Enum に制約するジェネリック メソッドを作成する

任意の列挙型を受け取るジェネリック メソッドを作成することは可能ですか? 次に、入力タイプをチェックして、最初に渡された列挙型であることを確認します (または、メソッド定義を通じて自然にそれを強制できますか?)。渡された列挙型の種類に基づいています。たとえば、列挙型である CompanyColumns、PayColumns などを渡すことができます。私のメソッドは、このような列挙型を取り、内部のケースステートメントで列挙型を操作できるようにする必要があります。

public static DbType GetColumnDataType (列挙型の任意のオブジェクトを渡せるようにしたい)

4

2 に答える 2

9
public static void MyFunction<T>(T en) where T: IComparable, IFormattable, IConvertible
{
    if (!typeof(T).IsEnum)
        throw new ArgumentException("en must be enum type");
    // implementation
}
于 2012-10-22T18:52:43.720 に答える
4

これを試して:

public static DbType GetColumnDataType(Enum en){...}

それは一般的ではありませんが、うまくいきます。

ジェネリックが必要な場合は、次のことができます。

public DbType GetColumnDataType<T>(T en)
{
    Type t = n.getType();
    if (!t.isEnum)
    {
      //through exception 
    }
}
于 2012-10-22T18:51:26.383 に答える