Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从T类型获取枚举值的说明_C#_Enums - Fatal编程技术网

C# 从T类型获取枚举值的说明

C# 从T类型获取枚举值的说明,c#,enums,C#,Enums,我正在尝试对声明为T的枚举调用ToDescription方法。编译器不会接受此方法,因为它不知道T是枚举 我想要实现的是这样的目标: public string FromDtoProperty(T source) { return source.ToDescription(); } 有什么方法可以做到这一点吗?这需要通用方法吗?如果不是这样的话,这应该是可行的 public string FromDtoProperty(Enum source) { return source.

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

我想要实现的是这样的目标:

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

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

这需要通用方法吗?如果不是这样的话,这应该是可行的

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是为任何枚举定义的扩展方法。

什么是ToDescription?该方法是如何定义的?枚举值的描述是什么?在enum E{A,B,C}中,对E.B的描述是什么?描述是对任何给定enum的扩展方法吗?我猜他的意思可能是:理想情况下,你可以在T:enum处进行。但这在C语言中还不受支持啊,这就是从T.@Smith.h.Neil开始描述的方法,这就是我们愚弄编译器的方法。你必须根据@ja72约束泛型类型,这对这个问题没有多大用处。无论如何,谢谢你指出。这就是我想要的,非常感谢!抱歉,我没有明确说明ToDescription函数是否与System.ComponentModel.DescriptionAttribute连接