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

| 我试图将IntelliSense和SandCastle兼容的文档添加到通过svcutil生成的WCF代理类中。有什么方法可以直接编辑生成的代码(因为如果重新生成它会丢失)?     
已邀请:
在WCFExtras项目中,您可以找到所需的功能。一个WSDL导出器和导入器,它将XML代码文档嵌入到WSDL中,然后将其拉出并再次将其作为XML doc添加到生成的客户端代理上。 可以在以下位置找到WCFExtras:http://wcfextras.codeplex.com/(或作为Nuget包)。 --larsw     
一种有限的解决方案是仅创建文档部分类以镜像SvcUtil生成的类。由于SvcUtil类是作为局部类创建的,因此您可以利用它来记录该类,但是这可能不适用于方法或属性。 IntelliSense将显示注释。我相信SandCastle也会合并评论,但还没有尝试过。如果您想走这条路,将这些类与服务更改保持同步可能会很痛苦。 这是文档类的样子:
/// <summary>
/// This is a comment
/// </summary>
public partial class YourSvcUtilGenerateClientClass { }
    
我认为您可以覆盖使用模板生成这些类的方式。 这里是文章讨论的链接。他们专注于Silverlight,但我认为代码上下文仍然适用。 http://www.silverlightshow.net/items/ADO.NET-Data-Services-Advanced-Topics-Custom-proxy-based-on-T4-templates.aspx     
就个人而言,我从未使用过生成的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秒。     
由于XML注释路线无法满足您的需求,因此文档! X 2011产品将是一个选择。它不是免费的,但可以满足您的需求。     

要回复问题请先登录注册