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