编写可以使用的xml文档时
,当然可以使用.但是,如何引用具有泛型类型的类或方法?
public class FancyClass{ public string FancyMethod (T value) { return "something fancy"; } }
如果我要在某处写xml文档,我将如何引用这个花哨的类?我该如何参考FancyClass
?方法怎么样?
例如,在另一个类中,我想让用户知道我将返回一个实例FancyClass
.我怎么能看到cref的东西呢?
要参考方法:
///for more information.
///Uses a instance.
顺便说一句,它出现在.Net Framework 2.0和3.0的MSDN文档中,但它在版本3.5中消失了
"我怎么参考
FancyClass
?"
///
"怎么样
FancyClass
?".FancyMethod (T value)
///
"我怎么能参考
FancyClass
?"
////// whose generic type argument is
尽管你可以参考其签名的方法包括FancyClass
(例如,作为参数类型),则不能直接引用这样的封闭的通用类型.第二个例子解决了这个限制.(例如,在静态System.String.Concat(IEnumerable
方法的MSDN refence页面上可以看到这一点).:
cref
规则:
用大括号括起泛型类型参数列表{}
而不是<>
尖括号.这使您免于逃避后者,<
并且>
- 记住,文档注释是XML!
如果包含前缀(例如,T:
对于类型,M:
对于方法,P:
对于属性,F:
对于字段),编译器将不会对引用执行任何验证,而只是将cref
属性值直接复制到文档XML输出.因此,您必须使用适用于此类文件的特殊"ID字符串"语法:始终使用完全限定标识符,并使用反引号来引用泛型类型参数(`n
类型,``n
方法).
如果省略前缀,则应用常规语言命名规则:您可以删除具有using
语句的命名空间,并且可以使用语言的类型关键字,int
而不是System.Int32
.此外,编译器将检查引用的正确性.
XML文档评论cref
备忘单:
namespace X { using System; ///(or from outside X) /// interface I1 { /// (or from inside I1) /// void M1(int p); /// /// void M2(U p); /// /// void M3(Action p); } /// /// interface I2 { /// /// void M1(int p); /// /// void M2(T p); /// /// void M3(U p); } }
到目前为止,所有答案都没有完全适用于我.ReSharper不会将see标签转换为Ctrl+可点击链接(例如)除非完全解决.
如果OP中的方法在名称空间中Test
,则显示的方法的完全解析链接将是:
由于你可以解决,在类类型参数的数量之前应该只有一个反引号,然后在方法类型参数的数量之前有两个反引号,那么参数是具有适当反引号数的零索引参数.
所以我们可以看到它FancyClass
有一个类类型参数,FancyMethod
有一个类型参数,FancyClass
参数类型的对象将传递给方法.
正如您在此示例中可以更清楚地看到的那样:
namespace Test { public class FancyClass { public void FancyMethod(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
"
作为一个补充说明,我没有发现任何记录,我不是一个天才,编译告诉我这一切.您所要做的就是创建一个测试项目,启用XML文档,然后插入您想要编写链接的代码,并在其上放置XML doc注释(///
):
namespace Test { public class FancyClass{ /// public string FancyMethod (T value) { return "something fancy"; } } public class Test { public static void Main(string[] args) { } } }
然后构建您的项目,输出的XML文档包含属性下的doc
- > members
- > member
元素中的链接name
:
Test
进一步从Lasse和TBC的答案:
///for more information. /// for more information.
还将正确提供工具提示,而他们的版本使用花括号呈现它.