到目前为止,没有一个答案完全适合我。除非完全解析,否则 ReSharper 不会将 see 标记转换为 Ctrl+可点击链接(例如 )。
如果 OP 中的方法位于名为 Test 的命名空间中,则显示的方法的完全解析链接将是:
<see cref="M:Test.FancyClass`1.FancyMethod``1(`0)"/>
如你所见,在类类型参数的数量之前应该只有一个反引号,然后在方法类型参数的数量之前有两个反引号,然后参数是具有适当数量的零索引参数反引号。
所以我们可以看到FancyClass有一个类类型参数,FancyMethod有一个类型参数,一个FancyClass参数类型的对象会被传递给方法。
你可以在这个例子中更清楚地看到:
namespace Test
{
public class FancyClass<A, B>
{
public void FancyMethod<C, D, E>(A a, B b, C c, D d, E e) { }
}
}
链接变成:
M:Test.FancyClass`2.FancyMethod``3(`0,`1,``0,``1,``2)
或“具有两个类型参数的类,该类具有具有三个类型参数的方法,其中方法参数为ClassType1、ClassType2、MethodType1、MethodType2、MethodType3”
作为补充说明,我在任何地方都没有找到此文档,而且我不是天才,编译器告诉了我这一切。您所要做的就是创建一个测试项目enable XML documentation,然后插入您想要为其创建链接的代码,并在其上添加一个 XML 文档注释的开头 (///):
namespace Test
{
public class FancyClass<T>
{
///
public string FancyMethod<K>(T value) { return "something fancy"; }
}
public class Test
{
public static void Main(string[] args) { }
}
}
然后构建你的项目,输出的 XML 文档包含 doc->members->member 元素中 name 属性下的链接:
<?xml version="1.0"?>
<doc>
<assembly>
<name>Test</name>
</assembly>
<members>
<member name="M:Test.FancyClass`1.FancyMethod``1(`0)">
</member>
</members>
</doc>