2016-07-25 96 views
2
public void CreateMethod() 
{ 
    CodeMemberMethod mymethod = new CodeMemberMethod(); 
    mymethod.Name = testMethod; 
    CodeTypeReference ctr = new CodeTypeReference(); 
    //Assign the return type to the method. 
    mymethod.ReturnType = ctr; 

    CodeSnippetExpression snippet1 = new CodeSnippetExpression("AutomationBase obj = new AutomationBase()"); 
    CodeSnippetExpression snippet2 = new CodeSnippetExpression("obj.Execute(testCases[1])");  
    CodeExpressionStatement stmt1 = new CodeExpressionStatement(snippet1); 
    CodeExpressionStatement stmt2 = new CodeExpressionStatement(snippet2); 
    mymethod.Statements.Add(stmt1); 
    mymethod.Statements.Add(stmt2); 
    mymethod.Attributes = MemberAttributes.Public; 
    myclass.Members.Add(mymethod); 
} 

輸出CodeDom如何創建一個void返回類型的方法?

public virtual void TestCaseId002() { 
      AutomationBase obj = new AutomationBase(); 
      obj.Execute(testCases[1]); 
     } 

得到虛擬無效

我只需要作廢。

+1

'virtual'無關與返回類型。 –

+1

由於'ctr。;'你提供的代碼甚至不會編譯。請提供一個[mcve](目前還不清楚這與ASP.NET有什麼關係,或者......) –

+0

,但默認情況下c#方法是非虛擬的。 – Lijo

回答

5

您需要標記方法Final,以表明它不是繼承:

mymethod.Attributes = MemberAttributes.Public | MemberAttributes.Final; 
+1

這有效,謝謝 – Lijo

+0

我還有一個疑問,我們如何指定我們需要生成代碼的位置? – Lijo

相關問題