System.Linq.Dynamic.ExpressionParser.GenerateConversion C# (CSharp) Method

GenerateConversion() private method

private GenerateConversion ( Expression expr, Type type, int errorPos ) : Expression
expr System.Linq.Expressions.Expression
type System.Type
errorPos int
return System.Linq.Expressions.Expression
		private Expression GenerateConversion(Expression expr, Type type, int errorPos)
		{
			Type exprType = expr.Type;
			if (exprType == type) return expr;
			if (exprType.IsValueType && type.IsValueType)
			{
				if ((IsNullableType(exprType) || IsNullableType(type)) &&
					GetNonNullableType(exprType) == GetNonNullableType(type))
					return Expression.Convert(expr, type);
				if ((IsNumericType(exprType) || IsEnumType(exprType)) &&
					(IsNumericType(type)) || IsEnumType(type))
					return Expression.ConvertChecked(expr, type);
			}
			if (exprType.IsAssignableFrom(type) || type.IsAssignableFrom(exprType) ||
				exprType.IsInterface || type.IsInterface)
				return Expression.Convert(expr, type);
			throw ParseError(errorPos, Res.CannotConvertValue(GetTypeName(exprType), GetTypeName(type)));
		}
ExpressionParser