private Condition compile(ConditionSettings settings) { string sourceCode = buildSourceCode(settings.Text, settings.Socket); Logger.Debug(string.Format("Compile SourceCode for {0}", settings.Text)); CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerParameters options = new CompilerParameters(); options.GenerateExecutable = false; options.GenerateInMemory = true; options.ReferencedAssemblies.Add("System.Core.dll"); options.ReferencedAssemblies.Add("Contracts.dll"); options.ReferencedAssemblies.Add("Core.dll"); options.ReferencedAssemblies.Add("Toolbox.dll"); try { var results = provider.CompileAssemblyFromSource(options, sourceCode); if (results.Errors.Count == 0) { var checker = Activator.CreateInstance(results.CompiledAssembly.DefinedTypes.FirstOrDefault()) as IConditionExecutor; return(new Condition(settings, checker)); } else { Logger.Error(string.Format("Can not compile condition: {0} ...", settings.Text)); foreach (CompilerError error in results.Errors) { Logger.Error(error.ErrorText); } } } catch (Exception e) { Logger.Error(e, string.Format("Can not parse condition: {0}", settings.Text)); } return(null); }
public Condition(ConditionSettings settings, IConditionExecutor conditionChecker) : base(settings.Text, settings.ResultingStatus, settings.Type, settings.Mode, settings.Socket) { _conditionChecker = conditionChecker; }