2012-01-20 26 views
5

üzerinden bana "kullanıcılar", "roller", ya da başka bir şey gibi özel nesnelerinin bir dizisi döndüren bir WCF yöntemi var ve bu sayfa çıkışa sahiptir. WCF yöntemi parametresi, saklı yordam seçme satırları vardır ve tüm satırların (sadece seçili değil) toplam kayıtlarını döndürür, dışarı parametresinde dönüş değerini okuduğumdan. Benim mesela.net lambda ifadesi ve parametre

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

neyi daha iyi bir çözüm: Ama lambda ifadede WCF-yöntemini çağırın bir problem mi var?

+1

Sorunuzu veya sorunun ne olduğunu açıklayabilir misiniz nedir? – BrokenGlass

+0

Sorunum, parametrelerin lambdada kullanılamamasıdır, wcf veya başka bir parçamın mimarisinde neyi değiştirmeliyim? –

+0

Eğer VS'den kopyala-yapıştırılmış-kolay bir şekilde çalıştırılabilecek basit bir kod oluşturacak olursanız çok daha iyi olurdu, bu yüzden size yardımcı olacağım. – Restuta

cevap

2

dışarı parametrelerle lambdas denemedim ama normalde sadece önceden değişken bildirmek gerekir:

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

Edit:

Yapabileceğiniz en iyi şey, ayrı olan GetAllUsers sarmak için kullanıcı tarafından şurada olabilir out parametresini kullanabilen sınıf:

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

Cevabınız için teşekkürler, ancak bu kod bir hata ortaya çıkaracaktır! –

+0

ne tür bir hata? – Restuta

+0

Hata "totalRecords" parametresini, anonim bir yöntem, lambda ifadesi veya sorgu ifadesi –