C#中如何集中定义XML参数描述符以复用至多个方法?
解决重复XML参数注释的方案
方法1:使用原生XML <include>标签复用注释
这是最直接的原生方案,无需额外工具,把通用参数的注释集中存储,在方法注释里直接引用即可。
步骤:
- 新建
CommonParams.xml文件,将其“复制到输出目录”设置为“始终复制”:
<doc> <members> <member name="T:CommonParams.XY"> <param name="x">x description</param> <param name="y">y description</param> </member> </members> </doc>
- 在方法的XML注释中引用这个节点:
public static class MyClass { /// <include file='CommonParams.xml' path='doc/members/member[@name="T:CommonParams.XY"]/*' /> public static int Add_XY(int x, int y) { return x + y; } /// <include file='CommonParams.xml' path='doc/members/member[@name="T:CommonParams.XY"]/*' /> public static int Subtract_XY(int x, int y) { return x - y; } }
修改CommonParams.xml就能统一更新所有引用方法的参数描述,IntelliSense会自动加载引用的注释内容。
方法2:自定义特性配合代码生成(实现[MyCommonParameters])
如果一定要用特性标记的方式,可以结合Roslyn代码生成器,在编译时自动为标记方法生成XML注释:
- 定义自定义特性:
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)] public sealed class MyCommonParametersAttribute : Attribute { public string ParamGroup { get; } public MyCommonParametersAttribute(string paramGroup) { ParamGroup = paramGroup; } }
- 编写Roslyn代码生成器,扫描带有
[MyCommonParameters]特性的方法,根据ParamGroup参数自动匹配预定义的参数注释模板,生成对应的<param>标签。生成器会在编译阶段自动为方法添加注释,IntelliSense能正常识别。
这个方案适合大规模项目,一次性定义规则后,所有标记的方法都会自动带上统一的参数注释。
方法3:Visual Studio自定义代码片段
如果只是想在编写代码时减少重复输入,可以创建代码片段快速插入注释:
- 打开Visual Studio的“工具”→“代码片段管理器”,选择C#语言。
- 新建代码片段,内容如下:
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>XYParamsComment</Title> <Shortcut>xycomment</Shortcut> <Description>插入XY参数的XML注释</Description> <Author>Your Name</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Code Language="csharp"> <![CDATA[/// <param name="x">x description</param> /// <param name="y">y description</param>]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
- 保存后,编写方法时输入
xycomment按Tab,就能快速插入重复的参数注释。
内容的提问来源于stack exchange,提问作者Jazenger
相关产品推荐
相关产品推荐

