Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public Condition(ConditionSettings settings, IConditionExecutor conditionChecker) : base(settings.Text, settings.ResultingStatus, settings.Type, settings.Mode, settings.Socket)
 {
     _conditionChecker = conditionChecker;
 }