2011-12-12 17 views
4

我想繞過內部方法調用,因此嘲笑它。該模擬的方法委託的樣子:如何在Microsoft Moles中提供帶有輸出參數的用戶定義代理

public Microsoft.Moles.Framework.MolesDelegates.OutOutFunc<string,string,string, 
byte[]> GetlineStringStringOutStringOut { set; } 

現在,在我的測試中,當我嘗試訪問該模擬的方法,如:

GetlineStringStringOutStringOut = (a,b,c) => {return bytearray}; 

發生錯誤說法參數2,3必須出關鍵字來聲明但是當我用out關鍵字聲明它們時,它根本不能編譯。我閱讀了其他SO問題和答案,似乎無法完成。

是否可以爲此提供用戶定義的委託?如果是,請舉個例子。

編輯:

我嘗試作爲嘲笑代表

static delegate byte[] MyFunc<String, String, String> 
(string a, out string b, out string c); 

申報我自己相同簽名的委託,但我不知道我怎麼能叫這同時呼籲嘲笑的委託方法?

回答

6

您需要的值從拉姆達返回之前明確地分配給bc變量,也可以指定參數類型,像這樣:

GetlineStringStringOutStringOut = (string a, out string b, out string c) => 
{ 
    b = c = string.Empty; 

    return new byte[] { }; 
}; 
+1

+1 ...謝謝喬 – Rahul

相關問題