c# - 将具有显式转换的对象转换为泛型方法类型 T
问题描述
我有AClass,其中包含方法形式的显式转换:
public static explicit operator Double(AClass x)
对于所有原始类型:int、string 等。类不实现IConvertible接口。
在这个约束之上,我正在制作具有以下签名的通用方法:
private void VerifyBla<T>(string abc, T expected)
AClass 基本上是围绕原始类型的包装器,在这种方法中,我想将AClass转换为T并验证它的值。
我试过使用:
(T)aClass
但智能感知:无法将类型“AClass”转换为 T。
是否有任何解决方法来解决这个问题,对 AClass 进行最小的更改或没有更改?
我试过使用:
(T)Convert.ChangeType(myobject, typeof(T));
但它失败了,因为 AClass 没有实现 IConvertible。如果我要实现它,我猜我需要实现很多方法。
解决方案
如果您不想实现完整的 IConvertible 接口,那么仅对您拥有的少数实例进行类型模式匹配可能是有意义的:
switch (expected)
{
case Double dbl: return dbl == (Double)aClass;
...
}
推荐阅读
- wordpress - Google 标签不会显示在 Google Tag Assistant 中,但会显示在 GTM 和 Analytics 的调试中
- c - 如何在C中用单词制作数字
- google-bigquery - 在 BigQuery 中基于另一个表的架构创建一个空表
- haskell - 来自 Simon Marlow 的《Haskell 中的并行和并发编程》一书中的严格评估示例
- java - brokerURL 语法我不清楚
- node.js - 使用相同输入时的 Node.js 运行时变化
- javascript - 接受通用参数和字符串数组的打字稿函数
- tensorflow - InvalidArgumentError:找到 2 个根错误。(0) 无效参数:矩阵大小不兼容:In[0]:[665,64],In[1]:[42560,1]
- javascript - 为什么当我改变轴(x,y)的位置时,我的图形会像下图一样改变形状?
- reactjs - 类型“模型”上不存在属性“登录”