コード例 #1
0
        public void IfInnerMixedForeignGenericIsWeaved_ThenCorrectResultIsPassed(string methodName, Type tArg1, Type tArg2)
        {
            // Arrange
            SetClosedMethod(methodName, tArg1, tArg2);

            // Act
            Weave(methodName);
            object result = AssemblyLoader.InvokeGenericMethod(ClosedClassType.TypeInfo(), methodName, new Type[] { tArg1, tArg2 }, Args);

            // Assert
            var results = result as List <string>;

            results[0].Trim().Should().Be(ExpectedEntryString(methodName));
            results[1].Trim().Should().Be(ExpectedExitString(methodName));
            results.Count.Should().Be(2);
        }
コード例 #2
0
        protected object Run(string methodName)
        {
            object result;
            var    method = ClosedClassType.GetMethod(methodName);

            if (method.IsGenericMethod)
            {
                var generics = method.GetGenericArguments();
                if (generics.Length == 1)
                {
                    result = AssemblyLoader.InvokeGenericMethod(ClosedClassType.TypeInfo(), methodName, new Type[] { typeof(MethodDisposable) }, Args);
                }
                else
                {
                    result = AssemblyLoader.InvokeGenericMethod(ClosedClassType.TypeInfo(), methodName, new Type[] { typeof(MethodDisposable), typeof(List <MethodDisposable[]>) }, Args);
                }
            }
            else
            {
                result = AssemblyLoader.InvokeMethod(ClosedClassType.TypeInfo(), methodName, Args);
            }

            return(result);
        }