我了解如何在调用方法时使用XML标记来填充IntelliSense描述.但是,我想集中各种参数(其中6个)的定义,这样我就不需要在数十个具有类似参数的公式中复制/粘贴相同的XML标记.

将它们定义为单个列表也会很有帮助,这样每个方法就只有一个decorator ,比如[MyCommonParameters],而不是每个方法上的6行定义.

例如,在下面的简化代码中,我有两个接受相同输入的函数.如果只需要定义一次参数描述就好了,以便在整个项目达到一定规模后具有更好的可维护性.

public static class MyClass
{
    /// <param name="x">x description</param>
    /// <param name="y">y description</param>
    public static int Add_XY(int x, int y)
    {
        return x + y;
    }

    /// <param name="x">x description</param>
    /// <param name="y">y description</param>
    public static int Subtract_XY(int x, int y)
    {
        return x - y;
    }
}

我try 过使用修饰符/属性,但遇到了问题,因为输入似乎需要静态文本,并且无法传递包含定义的变量.我还没有很好地掌握如何使用属性,所以我可能只是不知道如何使用自定义属性来实现它.

推荐答案

是的,有一种办法,as described here.

例如,您可以将一个名为"CodeDoc.xml"的文件添加到您的项目中,该文件包含以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<doc>
  <members>
    <member name="M:MyXYParams">
      <param name="x">Description of 'x' parameter</param>
      <param name="y">Description of 'y' parameter</param>
    </member>
  </members>
</doc>

然后更改您的XML注释以引用它,如下所示:

public static class MyClass
{
    /// <include file="CodeDoc.xml" path="doc/members/member[@name='M:MyXYParams']" />
    public static int Add_XY(int x, int y)
    {
        return x + y;
    }

    /// <include file="CodeDoc.xml" path="doc/members/member[@name='M:MyXYParams']" />
    public static int Subtract_XY(int x, int y)
    {
        return x - y;
    }
}

你可以把M:MyXYParams换成合适的,但据我所知,必须从M:开始.

Csharp相关问答推荐

当MD5被废弃时,如何在Blazor WASM中使用它?

O(N)测试失败

Blazor:类型或命名空间名称Components在命名空间中不存在''

MongoDB将JS查询转换为C#的问题

以自动方式注销Azure身份应用程序

如何删除文件的基础上嵌入的时间戳嵌入文件名

如何测量在使用UTF8而不是C#中的UTF16编码字符串时内存使用量的增长

当前的文化决定了错误的文化

Cosmos SDK和Newtonsoft对静态只读记录的可能Mutations

在swagger示例中添加默认数组列表

N层解决方案上的依赖注入-删除样板

关于扩展文件类C#的矛盾

错误:此版本的Visual Studio无法打开以下项目

为什么在使用JsonDerivedType序列化泛型时缺少$type?

流畅的验证--如何为属性重用规则?

如何在Cake脚本中设置MSBuild.exe的绝对路径

实体框架允许您具有筛选的属性吗?

外部应用&&的LINQ;左外部连接&类似于PostgreSQL的查询

如何在.NET8中使用Blazor Web App(WebAssembly)托管服务器端控制器?

C#、Visual Studio代码、调试器、错误处理变量请求.未知错误:0x80131502,