WCF - DataContract, который наследуется от интерфейса - PullRequest
2 голосов
/ 02 июня 2010

У меня есть дата-контракт как часть моего интерфейса WCF, который наследуется от IIdentity:

 [DataContract]
 public class AuthenticationIdentity : IIdentity
 {
    //implements IIdentity...
 }

Служба возвращает мои объекты AuthenticationIdentity просто отлично. Однако, когда я пытаюсь сделать очевидное приведение к клиенту:

AuthenticationIdentity aId = client.GetID();
IIdentity id = aId;

Я получил жалобу на то, что AuthenticationIdentity не может быть преобразовано в IIdentity. Я попытался добавить ServiceKnownTypes в интерфейс:

[ServiceKnownType(typeof(AuthenticationIdentity))]
[ServiceKnownType(typeof(IIdentity))]

но все равно не повезло. Есть идеи?

1 Ответ

3 голосов
/ 02 июня 2010

Если вы контролируете обе стороны провода (что выглядит так, как вы делаете, поскольку хотите привести к IIdentity), вы можете ссылаться на DataContract из общей сборки. Затем вы можете использовать svcutil для обмена DataContracts между службой и потребителем. Или, если вы хотите полностью исключить svcutil, вы можете написать собственный прокси-сервер для использования общей сборки.

...