bool CheckParameterTypesStrictly(IMethod method, ExpressionCollection args)
{
IParameter[] parameters = method.GetParameters();
for (int i=0; i<args.Count; ++i)
{
IType expressionType = GetExpressionType(args[i]);
IType parameterType = parameters[i].Type;
if (!IsAssignableFrom(parameterType, expressionType) &&
!(TypeSystemServices.IsNumber(expressionType) && TypeSystemServices.IsNumber(parameterType))
&& TypeSystemServices.FindImplicitConversionOperator(expressionType,parameterType) == null)
{
return false;
}
}
return true;
}