C#XML文档编译器警告

C#XML文档编译器警告,c#,xml,documentation,warnings,C#,Xml,Documentation,Warnings,我很好奇为什么在以下情况下会收到编译器警告 /// <summary>This is class A /// </summary> public class A { /// <summary>This is the documentation for Method A /// </summary> public void MethodA() { //Do something } } ///

我很好奇为什么在以下情况下会收到编译器警告

/// <summary>This is class A
/// </summary>
public class A
{
    /// <summary>This is the documentation for Method A
    /// </summary>
    public void MethodA()
    {
        //Do something
    }
}

/// <summary>This is class B
/// </summary>
public class B : A
{
    /// <summary>This does something that I want to
    /// reference <see cref="MethodA"/>
    /// </summary>
    public void MethodB()
    {
        //Do something
    }

}
///这是A类
/// 
公共A类
{
///这是方法A的文档
/// 
公开无效方法a()
{
//做点什么
}
}
///这是B班
/// 
B级:A级
{
///这是我想做的事情
///参考文献
/// 
公共无效方法b()
{
//做点什么
}
}
警告指出“对'B.MethodB()'的XML注释具有无法解析的cref属性'MethodA'。如果B继承自A,编译器在生成文档时不需要在cref中指定父类就不能看到该方法吗?如果我将cref更改为
cref=“A.MethodA()”
,效果很好,但这似乎是不必要的,而且很难做到,尤其是如果我必须提升多个级别

作为对任何进行此测试的人的一个提示,您必须确保在Properties->Build中选中“XML文档文件”才能看到警告

如果B继承自A,那么编译器在生成文档时不需要在cref中指定父类就不能看到该方法吗


你会这么想,但事实并非如此。XMLDoc解析器需要限定将方法放入其所属类的正确范围。如果该方法是同一类的一部分(即,不是从基类派生的),则可以不使用限定条件,否则您需要它。

是否有理由它需要限定条件而无法查找树本身?@Craig:您不应该将其视为方法调用。它是指向某个文档页面的链接。由于类
A
的文档页面上记录了
MethodA
,因此您需要参考。文档并不像实际的代码那样“编译”。文档不是继承的。