如何为生成的WCF代理类创建IntelliSense兼容文档?

时间:2011-04-13 16:42:40

标签: wcf c#-3.0 intellisense sandcastle

我正在尝试将IntelliSense和SandCastle兼容文档添加到通过svcutil生成的WCF代理类中。有没有办法在不直接编辑生成的代码的情况下执行此操作(因为如果重新生成它会丢失)?

5 个答案:

答案 0 :(得分:3)

在WCFExtras项目中,您可以找到您正在寻找的功能;获取XML代码文档并将其嵌入到WSDL +中的WSDL导出器和导入器将其拉出并在生成的客户端代理上再次将其作为XML doc添加。

WCFExtras可以在这里找到:http://wcfextras.codeplex.com/(或作为Nuget包)。

- larsw

答案 1 :(得分:1)

有限的解决方案可能是仅创建文档部分类来镜像SvcUtil生成的类。由于SvcUtil类是作为分部类创建的,因此您可以利用它来记录类,但这可能不适用于方法或属性。 IntelliSense将显示注释。我相信SandCastle也会合并评论,但没有尝试过。如果你想走这条路,让这些类与服务变化保持同步可能会很痛苦。

这是文档类的样子:

/// <summary>
/// This is a comment
/// </summary>
public partial class YourSvcUtilGenerateClientClass { }

答案 2 :(得分:1)

我认为您可以覆盖使用模板生成这些类的方式。 这是一篇文章的链接。他们专注于silverlight,但我认为代码背景仍然适用。

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

答案 3 :(得分:0)

就个人而言,我从未使用生成的WCF代理类。滚动自己的代理类太容易了。这就是所需要的(当您在代理类上添加ServiceContract接口时,Visual Studio可以为您添加这些方法):

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秒编辑您的代理类。

答案 4 :(得分:0)

由于XML评论路线无法满足您的需求,因此Document! X 2011产品将成为您的选择。它不是免费的,但它会做你需要的。