我正在尝试在enum上调用ToDescription
方法,该方法声明为T
。编译器不会接受此方法,因为它不知道T
是枚举。
我想要实现的是这样的:
public string FromDtoProperty(T source)
{
return source.ToDescription();
}
有什么办法可以做到这一点吗?
答案 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
定义的扩展方法。