2012-01-20 102 views
5

我有一個WCF方法,它返回像「用戶」,「角色」或其他的自定義對象的數組,並且它有頁面輸出。 WCF方法有out參數,存儲過程選擇行並返回所有行的總記錄(不僅是選中的),而是我讀出out參數中的返回值。但有一個問題,我打電話WCF法在lambda表達式:.net lambda表達式和輸出參數

var client = MySvcRef.MySvcClient(); 
var assistant = FormsAuthenticationAssistant(); 
var result = assistant.Execute<MySvcRef.UserClass[]>(
    () => client.GetAllUsers(out totalRecords, pageIndex, pageSize), 
    client.InnerChannel); 

什麼更好的解決方案,我的例子?

+1

你能澄清你的問題或問題嗎是什麼? – BrokenGlass

+0

我的問題是out參數不能在lambda中使用,我應該在我的wcf或其他部分的體系結構中更改哪些參數? –

+0

如果你將創建一個簡單的代碼,可以複製 - 從VS輕鬆運行,所以我將能夠提供幫助。 – Restuta

回答

2

我還沒有嘗試過用out參數lambda表達式,但通常你只需要事先聲明變量:

var client = MySvcRef.MySvcClient(); 
var assistant = FormsAuthenticationAssistant(); 
var totalRecords; 
var result = assistant.Execute<MySvcRef.UserClass[]>(
()=>client.GetAllUsers(out totalRecords, pageIndex, pageSize), 
    client.InnerChannel); 

編輯

最好的辦法可能通過包裝GetAllUsers帶獨立類可以使用out param:

Temp temp = new Temp(); 

var result = assistant.Execute<MySvcRef.UserClass[]>(()=>temp.GetAllUsers(client, pageIndex, pageSize),client.InnerChannel); 
int totalRecords = temp.TotalRecords; 

... 

class Temp 
{ 
    public int TotalRecords; 
    public MySvcRef.UserClass[] GetAllUsers(MySvcClient client, int pageIndex, int pageSize) 
    { 
     int totalRecords; 
     var result = client.GetAllUsers(out totalRecords, pageIndex, pageSize); 
     TotalRecords = totalRecords; 
     return result; 
    } 

} 
+0

感謝您的回覆,但是此代碼會導致錯誤! –

+0

有什麼樣的錯誤? – Restuta

+0

錯誤無法在匿名方法,lambda表達式或查詢表達式中使用ref或out參數'totalRecords' –