Home » c# » Inheriting XML comments from interfaces in C#

Inheriting XML comments from interfaces in C#

Posted by: admin November 30, 2017 Leave a comment

Questions:

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 the 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

Answers:

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.

Questions:
Answers:

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.

Questions:
Answers:

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

Questions:
Answers:

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.”