我想創建一個委託,並且可以用來調用任意數量的Web服務,我的應用程序需要一個方法:C#委託可以使用對象類型更通用嗎?
例子:
public DateCheckResponseGetDate(DateCheckRequest requestParameters)
{
delegate object WebMethodToCall(object methodObject);
WebMethodToCall getTheDate = new WebMethodToCall(WebServices.GetTheDate);
return (DateCheckResponse)CallWebMethod(getTheDate , requestParameters);
}
public TimeCheckResponse GetTime(TimeCheckRequest requestParameters)
{
delegate object WebMethodToCall(object methodObject);
WebMethodToCall getTheTime = new WebMethodToCall(WebServices.GetTheTime);
return (TimeCheckResponse)CallWebMethod(getTheTime, requestParameters);
}
private object CallWebMethod(WebMethodToCall method, object methodObject)
{
return method(methodObject);
}
但不幸的是,當我嘗試編譯,我得到這些錯誤:
沒有重載 'GetTheDate' 匹配委託 'WebMethodToCall' 沒有重載 'GetTheTime' 匹配委託 'WebMethodToCall'
看來代表應該工作。
WebServices.GetTheDate和WebServices.GetTheTime都採用一個參數(分別爲DateCheckRequest和TimeCheckRequest)並且都返回一個值。
所以委託沒有匹配兩個Web方法的簽名? (從對象派生的接受和返回類型)。
是否有可能使用對象類型在.NET 2.0中創建一個非常可重用的委託?
不幸的是,我被困在.NET 2.0中,所以你的解決方案不適合我。 – 2009-04-09 15:29:13
.NET 2.0支持泛型 – 2009-04-09 15:31:13
不錯,但是,在.NET 3.5中添加了LINQ的Func。 – Andy 2009-04-09 15:32:48