我在尝试使用codedom生成一些c#代码时尝试执行assign语句。
以下是我写的陈述:
inputmethod.Name = "CaptureInput";
inputmethod.Attributes = MemberAttributes.Public | MemberAttributes.Final;
inputmethod.Parameters.Add(
new CodeParameterDeclarationExpression(typeof(string[]), "inputs"));
inputmethod.Statements.Add(
new CodeBinaryOperatorExpression(
new CodePropertyReferenceExpression(
new CodeThisReferenceExpression(), "ColA")
, CodeBinaryOperatorType.Assign
, new CodeArrayIndexerExpression(
new CodeVariableReferenceExpression("inputs"),
new CodePrimitiveExpression(0))));
当它生成时,我得到的行如下:
(this.ColA = input [0]);
编译器发现上述行CS0201
如何删除生成的输出中的括号?
答案 0 :(得分:2)
括号是BinaryOperatorExpression的一部分。不要删除它们。
使用CodeAssignStatement代替CodeBinaryOperatorExpression。
inputmethod.Statements.Add(new CodeAssignStatement(
new CodeVariableReferenceExpression("ColA"),
new CodeArrayIndexerExpression(
new CodeVariableReferenceExpression("inputs"),
new CodePrimitiveExpression(0))));