Я разработал веб-службу , которая при каждом вызове метода возвращала бы структуру некоторого типа T
, если запрос был успешно выполнен, или иначе выдала бы клиенту FaultException
сигнализировать об ошибке. Одним из клиентских приложений было приложение ASP.NET с кучей ObjectDataSource
объектов, напрямую связанных с методами сервиса. Эти объекты будут заботиться о таких вещах, как подкачка GridView или заполнение DropDown для себя.
К сожалению, мне только что приказали удалить все FaultException
из службы и обернуть типы, которые я возвращал, в общую структуру ServiceResponse<T>
, которая оборачивает исходную структуру возврата типа T
и добавляет еще несколько полей к передавать информацию об исключениях. Не имея другого выбора, я сразу же сделал это и заменил все старые вызовы прокси-служб вызовом общего метода ExecuteMethod<TChannel, TReturn>
, который позаботился о том, чтобы развернуть значение, если запрос был выполнен успешно, или вызвать другое исключение в противном случае. Теперь проблема в том, что, поскольку этот новый метод является общим, я не могу привязать к нему ObjectDataSource
, и автоматическое разбиение по страницам в GridView пропало.
Поскольку ObjectDataSource
не поддерживает универсальные методы, а также не поддерживает универсальные классы без большого количества искажений с именами типов, соответствующих сборке, которых я хотел бы избежать, у меня остаются параметры любой страницы GridView вручную, чего я также хотел бы избежать, или написания прокси, чтобы обернуть каждый необходимый сервисный вызов и вернуть желаемое значение, которое затем является «оберткой». Можете ли вы помочь мне решить, какой из них не будет худшим? У меня есть другие варианты в этом случае?