Как создать совместимую с IntelliSense документацию для сгенерированных прокси-классов WCF? - PullRequest
3 голосов
/ 13 апреля 2011

Я пытаюсь добавить документацию, совместимую с IntelliSense и SandCastle, в мои прокси-классы WCF, созданные с помощью svcutil.Есть ли способ сделать это без непосредственного редактирования сгенерированного кода (поскольку он будет потерян, если он когда-либо будет восстановлен)?

Ответы [ 5 ]

3 голосов
/ 28 апреля 2011

В проекте WCFExtras вы можете найти нужную вам функциональность; экспортер и импортер WSDL, который берет документацию по XML-коду и встраивает ее в WSDL +, извлекает ее и снова добавляет в виде документа XML на сгенерированный прокси на стороне клиента.

WCFExtras можно найти здесь: http://wcfextras.codeplex.com/ (или в виде пакета Nuget).

- larsw

1 голос
/ 02 мая 2011

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

http://www.silverlightshow.net/items/ADO.NET-Data-Services-Advanced-Topics-Custom-proxy-based-on-T4-templates.aspx

1 голос
/ 13 апреля 2011

Ограниченным решением может быть создание документации только частичных классов для отражения классов, сгенерированных SvcUtil. Так как классы SvcUtil создаются как частичные классы, вы можете воспользоваться этим для документирования класса, но это, вероятно, не будет работать для методов или свойств. IntelliSense будет отображать комментарии. Я верю, что SandCastle также объединит комментарии, но еще не пробовал. Если вы хотите пойти по этому пути, может быть затруднительно синхронизировать эти классы с изменениями службы.

Вот как будет выглядеть класс документации:

/// <summary>
/// This is a comment
/// </summary>
public partial class YourSvcUtilGenerateClientClass { }
0 голосов
/ 25 апреля 2011

Поскольку маршрут комментариев XML не будет соответствовать вашим потребностям, тогда документ ! X 2011 продукт будет выбором. Это не бесплатно, но будет делать то, что вам нужно.

0 голосов
/ 13 апреля 2011

Лично я никогда не использую созданные прокси-классы WCF.Слишком легко накатить свой собственный прокси-класс.Это все, что нужно (методы могут быть добавлены для вас Visual Studio при добавлении интерфейса ServiceContract в прокси-класс):

using System.ServiceModel;

namespace My.Namespace
{
    public class MyServiceContractProxy : ClientBase<IMyServiceContract>, IMyServiceContract
    {
        public MyServiceContractProxy() { }
        public MyServiceContractProxy(string endpointName) : base(endpointName) { }

        #region IMyServiceContract Members

        public int AddValues(int val1, int val2)
        {
            return Channel.AddValues(val1, val2);
        }

        #endregion
    }
}

Если ваш ServiceContract изменится, он выдаст ошибку компиляции, потому чтопрокси больше не будет соответствовать интерфейсу, но обычно его редактирование занимает не более 10 секунд.

...