using System.Reflection.Emit;
using System.Diagnostics;
public static void Main()
var con = typeof(B<int>).GetConstructors()[0];
Console.WriteLine("Newobj.StackBehaviourPush: " + OpCodes.Newobj.StackBehaviourPush);
Console.WriteLine("Newobj.StackBehaviourPop: " + OpCodes.Newobj.StackBehaviourPop);
var ps = con.GetParameters();
Console.WriteLine("Parameters count: " + ps.Length);
Console.WriteLine(con.IsGenericMethod);
Console.WriteLine(con.CallingConvention);
Console.WriteLine(con.DeclaringType.IsGenericType);
var ctorDef = con.Module.ResolveMethod(con.MetadataToken, con.DeclaringType.GetGenericArguments(), null);
for (int i = 0; i < ps.Length; i++)
Console.WriteLine("parameter GetRequiredCustomModifiers(): " + ps[i].GetRequiredCustomModifiers().Length);
Console.WriteLine("parameter GetOptionalCustomModifiers(): " + ps[i].GetOptionalCustomModifiers().Length);
Console.WriteLine(ctorDef);
public B(params T[] ts) {}