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 CreateCallFunc_CallOneParameter_ReturnsCorrectData() { const int value = 12345; var instance = new CreateCallTestClass(); var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.GetData1)); var func = ExpressionUtils.CreateCallFunc <int, string>(instance, method); var result = func(value); Assert.Equal(value.ToString(), result); }
public void CreateCallFunc_CallWithoutParameter_ReturnsCorrectData() { var instance = new CreateCallTestClass { Data = "TestData" }; var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.GetData)); var func = ExpressionUtils.CreateCallFunc <string>(instance, method); var result = func(); Assert.Equal(instance.Data, result); }
public void CreateCallFunc_CallTwoParameter_ReturnsCorrectData() { const int value1 = 12345; const int value2 = 23456; var instance = new CreateCallTestClass(); var method = instance.GetType().GetMethod(nameof(CreateCallTestClass.GetData2)); var func = ExpressionUtils.CreateCallFunc <int, int, string>(instance, method); var result = func(value1, value2); Assert.Equal((value1 + value2 * 10).ToString(), result); }