mea*_*ode 8 c# reflection type-conversion
想象一下,您已经获得了两个System.Type,并且您想确定是否存在从一个到另一个的隐式或显式类型转换.
如果没有专门检查静态方法,是否有内置方法来确定该类型是支持这些转换还是这些转换?
我知道这是一个简短的问题,但我认为这个场景相对容易解释,如果不是,请告诉我.
斯蒂芬,提前谢谢.
Expression.Convert可以查找用户定义的转换运算符,但不幸的是,如果没有找到,它只会抛出异常.你可以像这样使用它:
public static bool CanConvert(Type fromType, Type toType)
{
try
{
// Throws an exception if there is no conversion from fromType to toType
Expression.Convert(Expression.Parameter(fromType, null), toType);
return true;
}
catch
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我不这么认为.你将使用反射并在每种类型上寻找那些好的ol' op_Implicit和op_Explicit静态方法.
这提出了一个非常有趣的问题:哪个具有更大的性能影响,反射(这个答案)或使用控制流异常(Quartermeister)?老实说,我无法猜测.您可能想要对每个人进行分析并自行查找.