Аналогично Приведение int к перечислению в C #, но мое перечисление является параметром универсального типа. Как лучше справиться с этим?
Пример:
private T ConvertEnum(int i) where T : struct, IConvertible
{
return (T)i;
}
Генерирует ошибку компилятораCannot convert type 'int' to 'T'
Полный код выглядит следующим образом, где value может содержать int или null.
private int? TryParseInt(string value)
{
var i = 0;
if (!int.TryParse(value, out i))
{
return null;
}
return i;
}
private T? TryParseEnum(string value) where T : struct, IConvertible
{
var i = TryParseInt(value);
if (!i.HasValue)
{
return null;
}
return (T)i.Value;
}