2012-01-20 50 views
5

Tôi có một phương thức WCF trả về cho tôi một mảng các đối tượng tùy chỉnh như "người dùng", "vai trò", hoặc cái gì khác và nó có đầu ra trang. WCF phương pháp đã ra tham số, thủ tục lưu trữ chọn hàng và trả về tổng số hồ sơ của tất cả các hàng (không chỉ được chọn), hơn tôi đọc giá trị trả về trong tham số ra. Nhưng có một vấn đề tôi gọi là phương pháp WCF trong biểu thức lambda:biểu thức lambda và tham số ngoài

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

giải pháp nào tốt hơn cho ví dụ của tôi?

+1

bạn có thể làm rõ câu hỏi hoặc vấn đề của mình Là? – BrokenGlass

+0

Vấn đề của tôi là các tham số không thể được sử dụng trong lambda, tôi nên thay đổi gì trong kiến ​​trúc của wcf của tôi hoặc phần khác? –

+0

Sẽ tốt hơn nếu bạn tạo một mã đơn giản có thể được copy-pasned-an-easy-run từ VS, vì vậy tôi có thể trợ giúp. – Restuta

Trả lời

2

tôi đã không cố gắng lambdas với các thông số ra nhưng thông thường bạn chỉ cần khai báo biến trước:

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

Sửa:

Tốt nhất có thể bằng cách quấn GetAllUsers với riêng lớp có thể sử dụng thông số 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; 
    } 

} 
+0

cảm ơn bạn đã trả lời nhưng mã này sẽ phát sinh lỗi! –

+0

loại lỗi nào? – Restuta

+0

Lỗi Không thể sử dụng tham số ref hoặc out 'totalRecords' bên trong một phương thức ẩn danh, biểu thức lambda hoặc biểu thức truy vấn –

Các vấn đề liên quan