public static ConstructorInvocation EmitConstructorInvocationDelegate(this ConstructorInfo ci) { var dynMeth = CreateDynamicMethod( "__SI_IL_ctor__" + ci.DeclaringType.Name, ci.DeclaringType, typeof(object), new Type[] { typeof(object) }); var IL = new IL(dynMeth.GetILGenerator()); var ciParameters = ci.GetParameters(); IL .newobj(ci); // todo: parameters handling IL .box_if_value_type(ci.DeclaringType) .ret(); return (ConstructorInvocation)dynMeth.CreateDelegate(typeof(ConstructorInvocation)); }