public IActionScript CreateActionScript(ScriptPackage scriptPackage) { var scriptObject = CreateScriptObject(scriptPackage); if (scriptObject == null) { return(null); } var scriptType = scriptObject.GetType(); var executeMethod = scriptType.GetMethod("Execute", new Type[0]); if (executeMethod != null) { var execute = ExpressionUtils.CreateCallAction(scriptObject, executeMethod); return(new ActionScript(scriptObject, scriptPackage.Name, () => { execute(); return Task.CompletedTask; })); } var executeAsyncMethod = scriptType.GetMethod("ExecuteAsync", new Type[0]); return(executeAsyncMethod == null ? null : new ActionScript(scriptObject, scriptPackage.Name, ExpressionUtils.CreateCallFunc <Task>(scriptObject, executeAsyncMethod))); }
public void CreateCallAction_CallWithoutParameter_MethodIsExecuted() { var instance = new CreateCallTestClass(); var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.SetData)); var action = ExpressionUtils.CreateCallAction(instance, method); action(); Assert.Equal("SetDataTest", instance.Data); }
public void CreateCallAction_CallOneParameter_MethodIsExecuted() { const int value = 12345; var instance = new CreateCallTestClass(); var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.SetData1)); var action = ExpressionUtils.CreateCallAction <int>(instance, method); action(value); Assert.Equal(value.ToString(), instance.Data); }
public void CreateCallAction_CallTwoParameter_MethodIsExecuted() { const int value1 = 12345; const int value2 = 23456; var instance = new CreateCallTestClass(); var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.SetData2)); var action = ExpressionUtils.CreateCallAction <int, int>(instance, method); action(value1, value2); Assert.Equal((value1 + value2 * 10).ToString(), instance.Data); }