Я хотел бы создать делегата и метод, который можно использовать для вызова любого числа веб-служб, которые требуются моему приложению:
Пример:
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, соответственно) и оба возвращают значение.
Значит, делегат не совпадает с сигнатурой двух веб-методов? (оба принимают и возвращают типы, полученные из объекта).
Можно ли использовать тип объекта для создания очень многократно используемого делегата в .NET 2.0?