首页 > 解决方案 > 将泛型类型传递给非泛型方法

问题描述

我想知道当来自泛型类型的方法时如何混合特定类型的方法的调用?

我知道给出的例子是多余的。它仅用于说明目的。我想象的一个最小的综合上下文如下:

该方法BitConverter.GetBytes具有多个值类型的重载。但是,如果我要编写一个static byte[] GetBytes<T>(T value) where T : struct返回的方法BitConverter.GetBytes(value),我会收到一条错误消息,指出最佳重载匹配 for 有一些无效参数。

我想这与值是通用类型而不是特定类型有关。

有没有办法将泛型类型赋予非泛型方法?通过一些铸造技巧或任何东西?

标签: c#genericsmethodsgeneric-type-argument

解决方案


目前是不可能的。您应该将泛型类型限制为编译器可以缩小到 BitConverter.GetBytes(value) 的重载之一。您用来约束的结构是一个非常大的组,而不仅仅是其中一个重载,因此它不会让您继续。

使用 c#10,您可能有一次机会使用“扩展一切”功能,但它尚未发布,现在谈论这个没有多大意义。


推荐阅读