从T类型获取枚举值的描述

时间:2014-08-08 20:25:52

标签: c# enums

我正在尝试在enum上调用ToDescription方法,该方法声明为T。编译器不会接受此方法,因为它不知道T是枚举。

我想要实现的是这样的:

public string FromDtoProperty(T source)
{
    return source.ToDescription();
}

有什么办法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

这需要是通用方法吗?如果不是这样的话。

public string FromDtoProperty(Enum source)
{
    return source.ToDescription();
}

如果它必须是通用的,那么你可以做

public string FromDtoProperty<T>(T source) where T : struct, IConvertible
{
    if (!typeof(T).IsEnum) 
    {
        throw new ArgumentException("T must be an enumerated type");
    }
    return ((Enum)(object)source).ToDescription();
}

假设ToDescription是为任何Enum定义的扩展方法。