Преобразование Int в Generic Enum в C#

Аналогично Приведение 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;
}

74
задан Community 23 May 2017 в 11:54
поделиться