我有 AClass ,其中包含以方法形式进行的显式转换:
public static explicit operator Double(AClass x)
用于所有原始类型:int,字符串等。类未实现 IConvertible 接口。
在此约束之上,我正在制作具有以下签名的通用方法:
private void VerifyBla<T>(string abc, T expected)
AClass基本上是包装器arround基本类型,在这种方法中,我想将 AClass 转换为 T 并验证其值。
我尝试使用:
(T)aClass
但是有智能:无法将类型“ AClass”转换为T。
是否有任何解决方法来解决此问题,而对AClass的更改很少或没有更改?
我尝试使用:
(T)Convert.ChangeType(myobject, typeof(T));
但是失败了,因为AClass没有实现IConvertible。而且如果我要实现它,我将需要实现许多我猜想的方法。
答案 0 :(得分:0)
如果您不想实现完整的IConvertible接口,那么仅对您拥有的少数几个实例进行类型匹配就很有意义:
switch (expected)
{
case Double dbl: return dbl == (Double)aClass;
...
}