public void CreateDynMethod_TypeOwner(bool skipVisibility) { Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) }; DynamicMethod method = new DynamicMethod("Method", typeof(int), parameterTypes, typeof(TestClass), skipVisibility); MethodInfo baseDefinition = method.GetBaseDefinition(); Assert.Equal(method, baseDefinition); }
public void CreateDynMethod_Module(bool skipVisibility) { Module module = typeof(TestClass).GetTypeInfo().Module; Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) }; DynamicMethod method = new DynamicMethod("Method", typeof(int), parameterTypes, module, skipVisibility); MethodInfo baseDefinition = method.GetBaseDefinition(); Assert.Equal(method, baseDefinition); }
[Test] // bug #78253 public void DynamicMethodReference() { DynamicMethod hello = new DynamicMethod("Hello", typeof(int), new Type[] { typeof(string) }, typeof(DynamicMethodTest).Module); Assert.IsNull(hello.DeclaringType, "#1"); DynamicMethod write = new DynamicMethod("Write", typeof(int), new Type[] { typeof(string) }, typeof(DynamicMethodTest)); Assert.IsNull(hello.DeclaringType, "#2"); MethodInfo invokeWrite = write.GetBaseDefinition(); ILGenerator helloIL = hello.GetILGenerator(); helloIL.Emit(OpCodes.Ldarg_0); helloIL.EmitCall(OpCodes.Call, invokeWrite, null); helloIL.Emit(OpCodes.Ret); ILGenerator writeIL = write.GetILGenerator(); writeIL.Emit(OpCodes.Ldc_I4_2); writeIL.Emit(OpCodes.Ret); HelloInvoker hi = (HelloInvoker)hello.CreateDelegate(typeof(HelloInvoker)); int ret = hi("Hello, World!"); Assert.AreEqual(2, ret, "#3"); object[] invokeArgs = { "Hello, World!" }; object objRet = hello.Invoke(null, invokeArgs); Assert.AreEqual(2, objRet, "#4"); }
public override MethodInfo GetBaseDefinition() => m_owner.GetBaseDefinition();
public override MethodInfo GetBaseDefinition() { return(_dynamicMethod.GetBaseDefinition()); }
private static MethodInfo CreateDynamicMethod(string name, Type[] parameterTypes) { var method = new DynamicMethod(name, typeof(void), parameterTypes); return(method.GetBaseDefinition()); }