Могу ли я составить контракт обратного вызова WCF из нескольких интерфейсов? - PullRequest
0 голосов
/ 24 марта 2010

Дополнительный вопрос к Как составить контракт WCF из нескольких интерфейсов? .

Я попытался объединить несколько интерфейсов обратного вызова в одном интерфейсе. Это приводит к InvalidOperationException, утверждающему, что конечный интерфейс не содержит операций. Технически это действительно так, однако унаследованные интерфейсы содержат операции.

Как я могу это исправить? Или это ограничение WCF?

Edit:

[ServiceContract]
// Using the following line instead would be no problem for me:
// [ServiceContract (CallbackContract = CallbackA)]
interface ServiceA { [OperationContract]void X(); }

[ServiceContract] // same here
interface ServiceB { [OperationContract]void Y(); }

interface CallbackA { [OperationContract]void CB_A() } // required in ServiceA
interface CallbackB { [OperationContract]void CB_B() } // required in ServiceB

interface CallbackC: CallbackA, CallbackB {} // composed callback contract

[ServiceContract (CallbackContract = CallbackC)]
interface ServiceC: ServiceA, ServiceB {} // composed service contract

1 Ответ

1 голос
/ 24 марта 2010

Трудно сказать, не смотря на иерархию контрактов самого контракта на обслуживание, но ответ может опираться на этот принцип:

"A service contract can only designate a callback contract if that contract is a subinterface of all callback contracts defined by the contract's own base contracts."

  • (Программирование служб WCF, O'Reilly, см. здесь в разделе «Иерархия контрактов обратного вызова»).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...