C#XML注释,CREF无法引用基类中定义的方法

时间:2018-06-20 19:26:34

标签: c# xml-comments

在我的代码库中,我有一个在基类中定义的方法,该基类是继承的,但该方法尚未被覆盖。将来很可能会覆盖此方法,以将其添加到基本实现中。

我的设置看起来像这样:

public abstract class BaseFoo
{
    public virtual void Bar()
    {
        //default implementation
    }
}

public class RealFoo : BaseFoo
{
    //extra code, does *NOT YET* override Bar but might in the future
}

public class DependentClass
{
    /// <summary>
    /// Uses <see cref="RealFoo.Bar"/> to do some magic
    /// </summary>
    public void SomeMethod()
    {

    }
}

由于将来很有可能会覆盖Bar,因此我想将来证明我的xmldoc和引用RealFoo.Bar而不是BaseFoo.Bar

当我在代码中调用RealFoo.Bar()时,不会发生任何错误。当我在cref属性中这样做时,会收到以下警告:

  

警告CS1574 XML注释的cref属性“ Bar”不能为   解决。

我在这里做错什么了吗?或者这仅仅是对cref的限制?

我正在使用Visual Studio 2017,目标是netstandard2.0和net452,并且在csproj中启用了XML文档。

2 个答案:

答案 0 :(得分:2)

您可以取消显示此警告,但是XmlDoc输出将其标记为错误。

<member name="M:MyApplication.DependentClass.SomeMethod">
    <summary>
        Uses <see cref="!:RealFoo.Bar"/> to do some magic
        <!--            ^- indicates an error -->
    </summary>
</member>

或者,如果您确定将来会覆盖该方法,并且打算使用XML输出生成文档,则只需在RealFoo中将其实现为{{ 1}},直到您想要一个新的实现。

答案 1 :(得分:0)

在这种情况下,我只是静态地编写ClassName.Member来达到目的。

/// <summary>
/// Uses <see cref="BaseFoo.Bar"/> to do some magic
/// </summary>
public void SomeMethod()
{

}

.NET Xml-Doc似乎不了解继承