Интерфейсы общего доступа, реализованные в службе WCF - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть веб-сервис wcf. Конечно же, Serice реализует интерфейс с атрибутом ServiceContract. Он также реализует другой интерфейс, который не имеет атрибута ServiceContract и хранится во внешней DLL. Когда я генерирую прокси, я не получаю второй интерфейс, реализованный в объекте прокси. Есть ли способ заставить svcutil генерировать прокси, который его реализует, или мне нужно добавить этот код вручную?

Привет

Ответы [ 3 ]

0 голосов
/ 02 сентября 2010

Это невозможно.Как будет выглядеть реализация?Должен ли он просто скопировать и вставить реализацию из исходного класса?Если вы хотите представить методы как веб-службы, вы должны поместить их в класс или интерфейс с атрибутом ServiceContract.

Предположим, что исходный класс обслуживания выглядит следующим образом:

public class MyService : IServiceContract, IOtherInterface
{
    ...

    public ObjectFromServiceAssembly MethodFromOtherInterface()
    {
        Console.WriteLine("Create instance of some object.");
        return new ObjectFromServiceAssembly();
    }
}

Как бы MethodFromOtherInterface выглядел на стороне сгенерированного прокси?Он не может просто скопировать вашу реализацию со стороны службы.

0 голосов
/ 02 сентября 2010

Это не имеет смысла.Если интерфейс не помечен как ServiceContract, он не отображается в службе и не может быть вызван из прокси.Если вы хотите, чтобы прокси также реализовывал интерфейс, вы также должны написать фактическую реализацию интерфейса в прокси (на стороне клиента!) = Копировать код из сервиса.Лучший способ - не реализовывать интерфейс в сервисе, а использовать вспомогательный класс и делиться этим классом между клиентом и сервером.У вас будет только одна реализация, и вы поделитесь ею.

0 голосов
/ 02 сентября 2010

Если вы добавите ссылку на сборку, содержащую определение интерфейса, в проекте, который будет содержать прокси, инструмент создания прокси будет использовать известный интерфейс вместо генерации своего собственного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...