public static Expression Resolve(this Expression source, IGeneratedQueryCode gc, ICodeContext cc, CompositionContainer container) { if (cc == null) { cc = new CodeContext(); } // It does happen that we are asked to translate a null expression. This could be a static method call, for example. if (source == null) { return(null); } try { Debug.WriteLine("Expression Resolver: Resolving {0}{1}", source.ToString(), ""); Debug.Indent(); var r = ResolveToExpression.Translate(source, gc, cc, container); Debug.WriteLine("Expression Resolver: Result: {0}{1}", r == null ? "<null>" : r.ToString(), ""); return(r); } finally { Debug.Unindent(); } }
/// <summary> /// Translate an expression. /// </summary> /// <param name="expr"></param> /// <param name="cc"></param> /// <returns></returns> public static Expression Translate(Expression expr, IGeneratedQueryCode gc, ICodeContext cc, CompositionContainer container) { var tr = new ResolveToExpression() { CodeContext = cc, GeneratedCode = gc, MEFContainer = container }; if (container != null) { container.SatisfyImportsOnce(tr); } return tr.Visit(expr); }
/// <summary> /// Translate an expression. /// </summary> /// <param name="expr"></param> /// <param name="cc"></param> /// <returns></returns> public static Expression Translate(Expression expr, IGeneratedQueryCode gc, ICodeContext cc, CompositionContainer container) { var tr = new ResolveToExpression() { CodeContext = cc, GeneratedCode = gc, MEFContainer = container }; if (container != null) { container.SatisfyImportsOnce(tr); } return(tr.Visit(expr)); }