using System; using System.Collections.Generic; using System.Linq.Expressions; using Umbraco.Core.Dynamics; namespace Umbraco.Web.Dynamics { internal static class DynamicExpression { //public static bool ConvertDynamicNullToBooleanFalse = false; public static Expression Parse(Type resultType, string expression, bool convertDynamicNullToBooleanFalse, params object[] values) { //ConvertDynamicNullToBooleanFalse = convertDynamicNullToBooleanFalse; var parser = new ExpressionParser(null, expression, values, convertDynamicNullToBooleanFalse); return parser.Parse(resultType); } public static LambdaExpression ParseLambda(Type itType, Type resultType, string expression, bool convertDynamicNullToBooleanFalse, params object[] values) { return ParseLambda(new ParameterExpression[] { Expression.Parameter(itType, "") }, resultType, expression, convertDynamicNullToBooleanFalse, values); } public static LambdaExpression ParseLambda(ParameterExpression[] parameters, Type resultType, string expression, bool convertDynamicNullToBooleanFalse, params object[] values) { //ConvertDynamicNullToBooleanFalse = convertDynamicNullToBooleanFalse; var parser = new ExpressionParser(parameters, expression, values, convertDynamicNullToBooleanFalse); return Expression.Lambda(parser.Parse(resultType), parameters); } public static Expression> ParseLambda(string expression, bool convertDynamicNullToBooleanFalse, params object[] values) { return (Expression>)ParseLambda(typeof(T), typeof(S), expression, convertDynamicNullToBooleanFalse, values); } public static Type CreateClass(params DynamicProperty[] properties) { return ClassFactory.Instance.GetDynamicClass(properties); } public static Type CreateClass(IEnumerable properties) { return ClassFactory.Instance.GetDynamicClass(properties); } } }