为什么System.Guid不实现System.Convertible



我最近尝试从接受<T>的方法返回类型GUID的对象,但是编译器给了我以下错误:

类型'System.Guid'不能用作类型参数'T't' 通用类型或方法" mygenericMethod"。没有拳击 从'System.Guid'转换为'System.Iconvertible'

调查后,我意识到编译器消息是由于无法实现系统的GUID类型引起的。

MSDN指出以下内容:

此接口提供了转换一个实例值的方法 实现类型的通用语言运行时类型,该类型具有 等效值。

提供的类型列表不包括GUID;谁能解释/提供有关为什么会这种情况的用例?

Iconvertible要求类型能够将其数据转换为大多数原语。例如,您将如何代表GUID作为浮点?

由于GUID无法实施大多数接口方法,因此预计不会声明自己。

现在在一个真正的问题上:您要完成什么?

使用system.guid作为通用方法的类型参数并不是以下代码所示的问题。您可以发布MyGenericMethod方法的实现以及调用该方法的代码吗?

class Program
{
    static void Main(string[] args)
    {
        var test = new GenericTest();
        test.MyGenericMethod(Guid.NewGuid());
    }
}
class GenericTest
{
    public void MyGenericMethod<T>(T t)
    {
    }
}

我猜想该方法实现具有类型约束,需要类型参数具有偶像性,因此看起来像以下内容。

class Program
{
    static void Main(string[] args)
    {
        var test = new GenericTest();
        test.MyGenericMethod(Guid.NewGuid());
    }
}
class GenericTest
{
    public void MyGenericMethod<T>(T t)
        where T : IConvertible
    {
    }
}

相关内容

最新更新