Я хотел бы создать делегат и метод, который может быть использован для вызова любых веб-служб, что мое приложение требует:Может ли делегат 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 соответственно) и оба возвращают значение.
Значит, делегат не соответствует подписи двух веб-методов? (как принимать, так и возвращать типы, полученные из объекта).
Возможно ли использовать тип объекта, чтобы сделать делегат с очень многократным повторением в .NET 2.0?
К сожалению, я придерживаюсь .NET 2.0, поэтому ваше решение не будет работать для меня. –
.NET 2.0 поддерживает generics –
Это правда, однако Func был добавлен с LINQ в .NET 3.5. – Andy