public static MethodWrapper CreateMethodWrapper(MetadataContainer metadata, TypeWrapper typeWrapper, MethodDefinition method) { MethodReference invokeTargetMethod = typeWrapper.Type.IsGenericInstance ? method.MakeGenericMethod(((GenericInstanceType)typeWrapper.Type)) : method; TypeWrapper returnType = metadata.AddType(method.ReturnType); TypeWrapper[] parameters = null; if (method.HasParameters) { parameters = new TypeWrapper[method.Parameters.Count]; for (int i = 0; i < parameters.Length; i++) { parameters[i] = metadata.AddType(method.Parameters[i].ParameterType); } } return(new MethodWrapper(method, invokeTargetMethod, typeWrapper, returnType, parameters)); }
protected override IStepContext Execute() { TypeDefinition corLibType = base.OperationContext.GetCorLibType("System.Single"); MetadataContainer metadataContainer = base.OperationContext.MetadataContainer; metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Boolean")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Byte")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Char")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Collections.IEnumerator")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Double")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Enum")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.IDisposable")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Int16")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Int32")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Int64")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.IntPtr")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.MulticastDelegate")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.Object")); metadataContainer.AddType(corLibType); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.String")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.UInt16")); metadataContainer.AddType(base.OperationContext.GetCorLibType("System.UInt32")); metadataContainer.AddType(new ArrayType(corLibType, 1)); return(null); }