开发者

Inheriting XML comments from interfaces in C#

I was wondering if anyone knows how to link an interface xml comment to an implementation. The problem is that I want the base comments to come from my interface first. Example:

interface myinterface {

       /// <summary>
       /// Does something.
       /// </summary>
       void method1(string foo);

}

and then the implementation is:

public class myclass : myinterface {


       public void method1(string foo) {
             //do something...
       }
}

So now if I hover over the method with my mouse after instantiating th开发者_开发技巧e object:

myclass foo = new myclass();
foo.method1("do something");

how can I make the comments appear in the hover popup? Is there some way I can link the interface comments to the implementation? I know there's a way in Java, but can't find the solution for C#.

Thanks


Updated Answer:

Use the <inheritdoc />-Tag.

Old Answer:
Linking XML Comments is IMHO not possible, but you could use a tool like GhostDoc to copy the XML Comment from your Interface/Baseclass to the implementation/derived class.


XMLDoc defines a tag <include /> for including comments from another file which has been around since Visual Studio 2003. The largest caveat is the referenced file should be a file containing only XMLDoc documentation, not another source file.

See the MSDN page for more details.


If you use GhostDoc it helps a lot with "transporting" the documentation from interfaces to the implementing code.


Looks like <inheritdoc/> will get native support soon.

See https://github.com/dotnet/csharplang/issues/313


http://blog.x-tensive.com/2008/02/fixml.html

It is a postprocessor that has certain additional options where the original documentation system is lacking.

From the website:

Brief summary:

FiXml is post-processor of XML documentation produced by C# \ Visual Basic.Net. It addresses some of the most annoying cases related to writing XML documentation in these languages: - No support for inheriting the documentation from base class or interface. I.e. a documentation for any overridden member should be written from scratch, although normally it’s quite desirable to inherit at least the part of it. - No support for insertion of commonly used documentation templates, such as “This type is singleton - use its property to get the only instance of it.”, or even “Initializes a new instance of class.”


I built a command line tool to post-process the XML documentation files adding support for the <inheritdoc/> tag.

While it doesn't help with Intellisense in source code, it does allow the modified XML documentation files to be included in a NuGet package and therefore works with Intellisense in referenced NuGet packages.

See www.inheritdoc.io for more info (free version available).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜