我正在开发一种规则引擎,用户将规则定义为一组条件和操作。这些条件和行为然后被解析成要执行的代码。我能够生成没有任何问题的代码。我被困在编译它然后加载类的地步。在运行时编译并使用类
如何获取一串动态生成的源代码并在运行时进行编译?
我该如何执行该代码?
我想能够拥有一个静态的规则列表,这些规则会随着规则的添加而更新。喜欢的东西:
static Dictionary<string, Rule> Rules { get; set; }
static void RefreshRules()
{
var newRules = DataLayer.GetRules().Where(r => !this.Rules.ContainsKey(r.Name));
foreach (var rule in newRules)
{
this.Rules[rule.Name] = CompileRule(rule.Code);
}
}
或者我会重新编译的程序集,然后重新放回我已经在运行的应用程序?
从这里开始:http://msdn.microsoft.com/en-us/library/650ax5cx.aspx;我过去使用过CodeDom,但没有代码示例方便正确的答案。 –
检出http://stackoverflow.com/questions/5766373/how-does-linqpad-compile-code –
是否有你不想使用规则引擎的原因,比如Drools? – Amy