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); }