2012-05-09 2 views
0

Pourriez-vous dire comment je peux faire une déclaration comme ci-dessous en utilisant CodeDOM (.net)?CodeDom séquence de méthodes

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

Merci.

Répondre

2

En supposant que _myClass est un champ de la classe avec laquelle vous travaillez, vous construisez le graphique en faisant référence au champ.

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

alors vous invoquez la méthode Configurer sur le terrain avec une expression primitive de la valeur de chaîne « myNode » en tant que paramètre.

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

Enfin, vous souhaitez utiliser cette expression pour appeler la méthode d'action, en utilisant des expressions primitives de « param1 » et « param2 » comme paramètres.

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

L'utilisation d'un CSharpCodeProvider, cela génère:

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