我想创建一个委托,并且可以用来调用任意数量的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