将具有显式转换的对象转换为泛型方法类型 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;
    ...
}

最新更新