に似ているC# で int を enum にキャストするしかし、私の列挙型はジェネリック型のパラメータです。最高これをどう処理すればいいでしょうか?
例:
private T ConvertEnum<T>(int i) where T : struct, IConvertible
{
return (T)i;
}
コンパイラエラーが発生しますCannot convert type 'int' to 'T'
完全なコードは次のとおりです。値には int または null を含めることができます。
private int? TryParseInt(string value)
{
var i = 0;
if (!int.TryParse(value, out i))
{
return null;
}
return i;
}
private T? TryParseEnum<T>(string value) where T : struct, IConvertible
{
var i = TryParseInt(value);
if (!i.HasValue)
{
return null;
}
return (T)i.Value;
}
ベストアンサー1
私が見つけた最も簡単な方法は、 にキャストを追加してコンパイラーに強制することですobject
。
return (T)(object)i.Value;