在C#中,有没有办法集中定义XML参数描述符以供多个方法使用?

问题描述 投票:0回答:1

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

将它们定义为单个列表也会很有帮助,这样每个方法只有一个装饰器,例如 [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;
    }
}

我尝试过使用装饰器/属性,但由于输入似乎需要静态文本而陷入困境,并且无法传递包含定义的变量。我对使用属性还没有很强的掌握,所以我可能只是错过了如何使用自定义属性来实现它。

c# xml intellisense
1个回答
0
投票

是的,有一种方法,如此处所述

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

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

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

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

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

您可以更改namespace.mytype.mymethod内容以适应。

© www.soinside.com 2019 - 2024. All rights reserved.