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); }
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); }