c# - 将泛型类型传递给非泛型方法
问题描述
我想知道当来自泛型类型的方法时如何混合特定类型的方法的调用?
我知道给出的例子是多余的。它仅用于说明目的。我想象的一个最小的综合上下文如下:
该方法
BitConverter.GetBytes
具有多个值类型的重载。但是,如果我要编写一个static byte[] GetBytes<T>(T value) where T : struct
返回的方法BitConverter.GetBytes(value)
,我会收到一条错误消息,指出最佳重载匹配 for 有一些无效参数。
我想这与值是通用类型而不是特定类型有关。
有没有办法将泛型类型赋予非泛型方法?通过一些铸造技巧或任何东西?
解决方案
目前是不可能的。您应该将泛型类型限制为编译器可以缩小到 BitConverter.GetBytes(value) 的重载之一。您用来约束的结构是一个非常大的组,而不仅仅是其中一个重载,因此它不会让您继续。
使用 c#10,您可能有一次机会使用“扩展一切”功能,但它尚未发布,现在谈论这个没有多大意义。
推荐阅读
- python - 返回日期之间的行仅间歇性地工作
- php - Slackware Web 服务器不加载 PHP MySQL 扩展,即使它们存在于正确的目录中
- python - 如何将PDF文件提取到没有表头/标题的Pandas数据框,因为数据框将其视为列
- android - 如何从房间持久性库中仅获取字符串?
- python - 解析Json提取键值python
- azure - ansible-collections/azure 提出了错误的请求。详细信息:必须定义至少一个系统池
- python - Pandas 数据操作:用一些预先确定的值映射列
- python - Python 中的 Selenium Wire 选项
- javascript - 从多个数组创建嵌套对象
- node.js - 获取最后修改日期