Я работаю над старым сервисом WCF со многими интерфейсами и сервисами для новой системы. Я хочу изменить тип возвращаемых функций без изменения всех сервисных интерфейсов и реализаций следующим образом:
interface OperationResult
{
ErrorInfo Error { get; set; }
}
interface OperationResult<TResult> : OperationResult
{
TResult Result { get; set; }
}
// old service
interface IService
{
int TestMethod1(TestMethod1Input input);
void TestMethod2(TestMethod2Input input);
}
// Interface that client should see
interface IService
{
OperationResult<int> TestMethod1(TestMethod1Input input);
OperationResult TestMethod2(TestMethod2Input input);
}
Я думаю, что могу обрабатывать исключения с IOperationInvoker
но я не знаю, как изменить возвращаемое значение фактического сервиса, и я хотел изменить тип возврата функции в WSDL, используя IWsdlExportExtension
. Но я не смог найти ни одной документации или образца скважины ни для одного из них.
Может кто-нибудь предложить какой-либо образец или документацию или любой другой способ, который может избавить меня от необходимости менять слишком много уже существующих служб?
ПРИМЕЧАНИЕ: у меня есть другой способ сделать это, создав пользовательский ServiceHost
который создает динамическую оболочку для фактического сервиса и передает его как тип сервиса в конструктор ServiceHost
. Но это должно быть последним решением, поскольку оно будет генерировать много динамических типов.