public CSharpLamdaExpression GetExpression() { if (expression == null) { expression = interpreter.GetLamdaExpression(); } return(expression); }
private static void StaticMethodRequest(Method methodRequest) { var staticMethodDictionary = GetStaticMethodDictionary(methodRequest); var expressionInterpreterHandler = new ExpressionInterpreterHandler(methodRequest); var compiledMethod = expressionInterpreterHandler.GetLamdaExpression().Compile(); if (staticMethodDictionary.ContainsKey(methodRequest.ParentType)) { var membersDictionary = staticMethodDictionary[methodRequest.ParentType]; if (membersDictionary.ContainsKey(methodRequest.Name)) { membersDictionary[methodRequest.Name] = compiledMethod; } else { membersDictionary.Add(methodRequest.Name, compiledMethod); } } else { var membersDictionary = new Dictionary <string, Delegate>(); membersDictionary.Add(methodRequest.Name, compiledMethod); staticMethodDictionary.Add(methodRequest.ParentType, membersDictionary); } }
public static CSharpLamdaExpression GetLamdaExpression(string codeFile, string methodName) { var syntaxTree = Helper.GetSyntaxTree(codeFile); var mds = Helper.GetMethodDeclarationSyntax((CompilationUnitSyntax)syntaxTree.GetRoot(), methodName); var semanticModel = Helper.GetSemanticModel(syntaxTree); var statementInterpreterHandler = new StatementInterpreterHandler(mds, semanticModel); var method = statementInterpreterHandler.GetMethod(); var interpreterHandler = new ExpressionInterpreterHandler(method); var lamdaExpression = interpreterHandler.GetLamdaExpression(); return(lamdaExpression); }
private static void InstanceMethodRequest(Method methodRequest) { var instanceMethodDictionary = GetInstanceMethodDictionary(methodRequest); var expressionInterpreterHandler = new ExpressionInterpreterHandler(methodRequest); var instanceMethod = expressionInterpreterHandler.GetLamdaExpression(); if (instanceMethodDictionary.ContainsKey(methodRequest.ParentType)) { var membersDictionary = instanceMethodDictionary[methodRequest.ParentType]; if (membersDictionary.ContainsKey(methodRequest.Name)) { membersDictionary[methodRequest.Name] = instanceMethod; } else { membersDictionary.Add(methodRequest.Name, instanceMethod); } } else { var membersDictionary = new Dictionary <string, CSharpLamdaExpression>(); membersDictionary.Add(methodRequest.Name, instanceMethod); instanceMethodDictionary.Add(methodRequest.ParentType, membersDictionary); } foreach (var list in instanceClasses.Where(x => x.GetType() == methodRequest.ParentType)) { if (list.InstanceMethods.ContainsKey(methodRequest.Name)) { list.InstanceMethods[methodRequest.Name] = instanceMethod.Compile(); } else { list.InstanceMethods.Add(methodRequest.Name, instanceMethod.Compile()); } } }