假設我有以下WCF代碼:如何傳遞幾個方法(帶參數)作爲參數?
try
{
ServiceClient proxy = new ServiceClient();
proxy.ClientCredentials.UserName.UserName = "user";
proxy.ClientCredentials.UserName.Password = "password";
proxy.GetData(2);
if (proxy.State = CommunicationState.Opened)
{
proxy.GetData("data");
}
proxy.Close();
}
catch (FaultException ex)
{
// handle the exception
}
而且因爲我注意到,TRY ... CATCH和其他邏輯是重複的,更不用說建立一個WCF電話是昂貴的,我想送許多「方法和參數」用於這個功能。
實質上,將GetData(2)
和GetData("data")
作爲方法數組傳遞,並使結果以異步或同步方式返回。
我該如何做到這一點?
我想我可以有兩個'ref'對象來處理結果[]和對結果[]的共享鎖。不過,我不知道如何將「帶參數的方法」作爲參數傳遞給另一個函數。
也許看着這個的另一種方式可能是一個函數指針數組,對於具有不同參數的相同函數。
任何人都可以推動我這樣做的正確方法嗎?
更多信息:
我問這個問題so I can optimize this approach to handling WCF exceptions and retries但讓我沒有在每次通話後總是打開/關閉客戶端。
你甚至可以使用Action版本,如果他們*做*返回的東西。你可以在lambda中包含賦值。這可能是危險的,但有時它可能是你想要的。 – Magus
是的,或者您也可以爲您的操作(而不是lambda)創建一個{}主體,然後執行任何操作,然後不會從操作中返回任何內容。很多可能性。 –
我錯過了什麼,因爲我不認爲代碼甚至編譯...我得到「委託」System.Func「不帶1個參數」。我敢肯定,你不能僅僅通過傳遞參數來將代表添加到列表中,就像調用方法一樣... –
evanmcdonnal