odInvokeExpression(new CodeTypeReferenceExpression("da"),"Fill", new CodeVariableReferenceExpression("ds") ); CodeExpressionStatement expressionStatement = new CodeExpressionStatement( invokeExpression ); conditionalStatement.TrueStatements.Add(expressionStatement); conditionalStatement.TrueStatements.Add(new CodeVariableReferenceExpression("return ds"));
而在假的时候执行下面的语句: conditionalStatement.FalseStatements.Add(new CodeVariableReferenceExpression("return null"));
接着我们把 if 语句添加到 try 语句中间,就像下面这样: try1.TryStatements.Add(conditionalStatement);
同时我们使用下面的方法把 try 语句添加到我们的方法里面: codeMemberMethod.Statements.Add(try1);
接着就是我们遇到异常的时候希望抛出异常信息,代码如下: CodeCatchClause catch1 = new CodeCatchClause("ex", CodeTypeReference("System.ApplicationException")); catch1.Statements.Add(new CodeVariableReferenceExpression("throw ex") ); try1.CatchClauses.Add( catch1 );
new
接着就是需要回收资源的代码,我们在这里将连接关闭(其实应该先检查状态再关闭,虽然 SqlDataAdapter 不需要显式的关闭,但是如果加上判断写在这里也没有什么错) try1.FinallyStatements.Add( new CodeVariableReferenceExpression("this.m_connection.Close()")); codeTypeDeclaration.Members.Add(codeMemberMethod);
下面就可以将代码生成了 codeGenerator.GenerateCodeFromNamespace(codeNamespace,codeWriter,codeGeneratorOptions );
在最后不要忘了关闭资源 codeWriter.Close(); codeStream.Close();