2013-05-12 64 views
0

我想試圖使用生成的CodeDOM一些C#代碼做一個賦值語句。如何避免括號出現在生成的方法聲明

下面是我寫的語句:

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

看起來好像將所生成的線是一個方法調用的一部分。那是什麼inputMethod? – 2013-05-12 08:50:42

+0

它是一個CodeMemberMethod ... – deostroll 2013-05-12 08:58:34

回答

2

括號是BinaryOperatorExpression的一部分。不要刪除它們。使用CodeAssignStatement而不是CodeBinaryOperatorExpression。

inputmethod.Statements.Add(new CodeAssignStatement(
    new CodeVariableReferenceExpression("ColA"), 
    new CodeArrayIndexerExpression(
     new CodeVariableReferenceExpression("inputs"), 
     new CodePrimitiveExpression(0))));