mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-14 19:04:51 +08:00
- PERF Fix for codeplex bug 16713: don't use dynamic keywork to invoke DLR object methods
--HG-- branch : perf
This commit is contained in:
@@ -14,23 +14,21 @@ namespace Orchard.Widgets.RuleEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public bool Matches(string expression) {
|
public bool Matches(string expression) {
|
||||||
_scriptingManager.SetVariable("callbacks", new CallbackApi(this));
|
|
||||||
dynamic execContext = _scriptingManager.ExecuteExpression(@"
|
dynamic execContext = _scriptingManager.ExecuteExpression(@"
|
||||||
class ExecContext
|
class ExecContext
|
||||||
def initialize(callbacks)
|
def execute(callbacks, text)
|
||||||
@callbacks = callbacks;
|
@callbacks = callbacks;
|
||||||
end
|
temp = instance_eval(text.to_s);
|
||||||
|
@callbacks = 0;
|
||||||
def execute(text)
|
return temp;
|
||||||
instance_eval(text.to_s);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def method_missing(name, *args, &block)
|
def method_missing(name, *args, &block)
|
||||||
@callbacks.send(name, args, &block);
|
@callbacks.send(name, args, &block);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
ExecContext.new(callbacks)");
|
ExecContext.new()");
|
||||||
return execContext.execute(expression);
|
return execContext.execute(new CallbackApi(this), expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CallbackApi {
|
public class CallbackApi {
|
||||||
|
Reference in New Issue
Block a user