- PERF Fix for codeplex bug 16713: don't use dynamic keywork to invoke DLR object methods

--HG--
branch : perf
This commit is contained in:
Suha Can
2010-11-03 14:17:27 -07:00
parent f690c17be8
commit d7963003aa

View File

@@ -14,23 +14,21 @@ namespace Orchard.Widgets.RuleEngine {
}
public bool Matches(string expression) {
_scriptingManager.SetVariable("callbacks", new CallbackApi(this));
dynamic execContext = _scriptingManager.ExecuteExpression(@"
class ExecContext
def initialize(callbacks)
def execute(callbacks, text)
@callbacks = callbacks;
end
def execute(text)
instance_eval(text.to_s);
temp = instance_eval(text.to_s);
@callbacks = 0;
return temp;
end
def method_missing(name, *args, &block)
@callbacks.send(name, args, &block);
end
end
ExecContext.new(callbacks)");
return execContext.execute(expression);
ExecContext.new()");
return execContext.execute(new CallbackApi(this), expression);
}
public class CallbackApi {