簡體   English   中英

.net lambda表達式和out參數

[英].net lambda expression and out parameter

我有一個WCF方法,它返回一個自定義對象數組,如“用戶”,“角色”或其他東西,它有頁面輸出。 WCF方法有out參數,存儲過程選擇行並返回所有行(不僅選中)的總記錄,而不是i讀出out參數中的返回值。 但是我在lambda表達式中調用WCF方法有一個問題:

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

我的例子有什么更好的解決方案

我沒有嘗試過帶參數的lambdas,但通常你只需要事先聲明變量:

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參數的單獨類中:

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;
    }

}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM