我是invoking一个使用反射的方法但我想在这之前检查我拥有的参数数组是否正确。我尝试了几种方法,如Type.IsAssignableFrom和其他比较,但它们仍然给出误报。例如,当int
作为接受enum
。
reference source似乎完成了这项检查,是否暴露在某处?
我目前的代码如下:
private bool CheckTypeMatch(ParameterInfo[] methodParameters, Type[] callParameterTypes)
{
if (methodParameters.Length < callParameterTypes.Length)
{
return false;
}
for (int index = 0; index < callParameterTypes.Length; index++)
{
Type type = methodParameters[index].ParameterType;
if (callParameterTypes[index] != null && !type.IsAssignableFrom(callParameterTypes[index]) && !(type.IsEnum && System.Enum.GetUnderlyingType(type).IsAssignableFrom(callParameterTypes[index])))
{
return false;
}
}
return true;
}
我担心有更多的情况,参数的类型实际上与方法兼容,但被此函数拒绝。 提前谢谢!