2012-05-09 74 views
0

你能說我怎麼可以做下面的語句使用CodeDOM(.net)?CodeDom方法的序列

_myClass.Configure("MyNode").Action("param1", "param2"); 

謝謝。

回答

2

假設_myClass是您正在使用的類中的字段,您可以通過對該字段進行引用來構建圖。

CodeExpression fieldReferenceExpression = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass") 

然後,您將調用字段值爲「MyNode」的基本表達式作爲參數的字段上的Configure方法。

CodeExpression configureInvokeExpression = new CodeMethodInvokeExpression(
      new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass"), 
      "Configure", 
      new CodePrimitiveExpression("MyNode")) 

最後,你會使用表達式來調用Action方法,採用「參數1」和「參數2」作爲參數的原始表達式。

CodeExpression actionInvokeExpression = new CodeMethodInvokeExpression(
     new CodeMethodInvokeExpression(
      new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass"), 
      "Configure", 
      new CodePrimitiveExpression("MyNode")), 
     "Action", 
     new CodePrimitiveExpression("param1"), 
     new CodePrimitiveExpression("param2")); 

使用CSharpCodeProvider,這產生:

this._myClass.Configure("MyNode").Action("param1", "param2")