通过显式转换将对象转换为通用方法类型T

时间:2019-06-11 13:51:42

标签: c# type-conversion

我有 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。而且如果我要实现它,我将需要实现许多我猜想的方法。

1 个答案:

答案 0 :(得分:0)

如果您不想实现完整的IConvertible接口,那么仅对您拥有的少数几个实例进行类型匹配就很有意义:

switch (expected)
{
    case Double dbl: return dbl == (Double)aClass;
    ...
}