Пример #1
0
        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)));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }