タイプ「int」に制約されているジェネリックメソッドがある場合、整数をジェネリック T 型にキャストできるはずです。例えば...
public T ExampleMethod<T>(int unchanged) where T : int
{
return (T)unchanged;
}
...コンパイラは、タイプ「int」を「T」に変換できないと不平を言いますが、ターゲットが整数であることを示す制約があります。それで、確かにそれはうまくいくはずですか?
アップデート:
実際のシナリオでは、列挙値を返すヘルパー メソッドが必要です。したがって、私の理想的なヘルパー メソッドは、次のようになります....
public T GetAttributeAsEnum<T>(XmlReader reader, string name) where T : enum
{
string s = reader.GetAttribute(name);
int i = int.Parse(s);
return (T)i;
}
...そして、このように使用します...
StateEnum x = GetAttributeAsEnum<StateEnum>(xmlReader, "State");
CategoryEnum y = GetAttributeAsEnum<CategoryEnum>(xmlReader, "Category");
OtherEnum z = GetAttributeAsEnum<OtherEnum>(xmlReader, "Other");
...しかし、列挙型で制約することはできません。