问题描述
如何在 Codedom 中执行以下代码:
dt
我熟悉 CodeIterationStatement 和 CodeConditionStatement 但不知道如何执行。
解决方法
你想在循环内执行什么类型的语句或条件取决于需求。我想 if 语句里面应该有一个条件让我们通过例子来理解
int a=5;
if(a>1)
{
for(int i=0;i<10;i++)
{
Console.WriteLine("{0}",i);
}
}
,
这应该可以解决问题
private CodeConditionStatement makeIfStatementWithLoop(CodeExpression conditionExpr,CodeExpression iterationLimit)
{
CodeConditionStatement ifStatement = new CodeConditionStatement();
ifStatement.Condition = conditionExpr;
CodeVariableDeclarationStatement iDeclaration = new CodeVariableDeclarationStatement(new CodeTypeReference(typeof(int)),"i");
CodeVariableReferenceExpression iReference = new CodeVariableReferenceExpression(iDeclaration.Name);
CodeIterationStatement loopStatement = new CodeIterationStatement();
loopStatement.InitStatement = new CodeAssignStatement(iReference,new CodePrimitiveExpression(0));
CodeAssignStatement incrementStatement = new CodeAssignStatement();
incrementStatement.Left = iReference;
incrementStatement.Right = new CodeBinaryOperatorExpression(iReference,CodeBinaryOperatorType.Add,new CodePrimitiveExpression(1));
loopStatement.IncrementStatement = incrementStatement;
loopStatement.TestExpression = new CodeBinaryOperatorExpression(iReference,CodeBinaryOperatorType.LessThan,iterationLimit);
CodeVariableReferenceExpression consoleRef = new CodeVariableReferenceExpression("Console");
CodeExpression[] args = new CodeExpression[] { iReference };
CodeMethodInvokeExpression consoleWriteLineStmt = new CodeMethodInvokeExpression(consoleRef,"WriteLine",args);
loopStatement.Statements.Add(consoleWriteLineStmt);
ifStatement.TrueStatements.Add(loopStatement);
return ifStatement;
}