예제 #1
0
        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));
        }