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

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


person chilltemp    schedule 13.04.2011    source источник


Ответы (5)


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

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

--larsw

person larsw    schedule 28.04.2011
comment
Это лучшее решение, которое я слышал до сих пор. Я приму ответ, как только у меня будет время проверить его. - person chilltemp; 02.05.2011
comment
WCFExtrasPlus переехал на GitHub. Здесь: github.com/lamronby/wcfextrasplus - person Deantwo; 27.09.2017

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

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

/// <summary>
/// This is a comment
/// </summary>
public partial class YourSvcUtilGenerateClientClass { }
person Sixto Saez    schedule 13.04.2011
comment
Мне нужно задокументировать методы, свойства и т. д. У меня есть много классов DataContract, для которых я хочу правильно задокументировать свойства. - person chilltemp; 18.04.2011
comment
К сожалению, нет простого способа напрямую /// добавить документацию к вашим методам и свойствам без повторного создания прокси-сервера вручную. Я думаю, что есть способ создания внешних ресурсов документации для использования замком из песка, но я не думаю, что это поможет с IntelliSense. Для IntelliSense вам понадобится что-то вроде инструмента для внедрения документации непосредственно в скомпилированную сборку. - person Sixto Saez; 18.04.2011

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

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

person BentOnCoding    schedule 02.05.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-секундного редактирования вашего прокси-класса.

person Joel C    schedule 13.04.2011
comment
Используете ли вы общую dll для содержания интерфейса или просто создаете интерфейс из WSDL (используя svcutil)? - person chilltemp; 13.04.2011
comment
Я намеренно избегал использования общей dll из-за меньшего количества знаний о версиях WCF. - person chilltemp; 13.04.2011
comment
Ах, это звучит как боль, с которой мне не приходилось иметь дело. Если общий интерфейс невозможен, то я думаю, что подход с частичным классом был бы правильным. - person Joel C; 14.04.2011

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

person Sixto Saez    schedule 25.04.2011