Beispiel #1
0
        void EmitBuildWrapped(CodeTypeDeclaration cur_type, CodeMemberMethod meth)
        {
            CodeMethodInvokeExpression inv =
                new CodeMethodInvokeExpression(CDH.This, "CreateResultObject",
                                               new CodeExpression[0] {
            });
            CodeCastExpression cast =
                new CodeCastExpression(bf_ret_class.AsCodeDom, inv);
            CodeVariableDeclarationStatement vd =
                new CodeVariableDeclarationStatement(bf_ret_class.AsCodeDom, bf_ret_arg, cast);

            meth.Statements.Add(vd);

            CodeVariableReferenceExpression r1 = CDH.VRef(bf_ret_arg);
            CodeVariableReferenceExpression r2 = CDH.VRef(bf_context_arg);

            inv = new CodeMethodInvokeExpression(CDH.This, "BuildImpl",
                                                 new CodeExpression[2] {
                r1, r2
            });

            meth.Statements.Add(CDH.IfTrueReturnNull(inv));
            meth.Statements.Add(new CodeMethodReturnStatement(r1));

            // BuildImpl

            CodeParameterDeclarationExpression p1 = CDH.Param(bf_ret_class.AsCodeDom, bf_ret_arg);
            CodeParameterDeclarationExpression p2 = CDH.Param(CDH.IContext, bf_context_arg);

            meth            = new CodeMemberMethod();
            meth.Name       = "BuildImpl";
            meth.Attributes = MemberAttributes.Private;
            meth.ReturnType = CDH.Bool;
            meth.Parameters.Add(p1);
            meth.Parameters.Add(p2);
            meth.Statements.Add(bf_code.AsStatement);
            cur_type.Members.Add(meth);
        }