我有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;
...
}