Bug 18411 - mdoc creates documentation for internal interfaces on classes
Summary: mdoc creates documentation for internal interfaces on classes
Alias: None
Product: Tools
Classification: Mono
Component: Doctools ()
Version: unspecified
Hardware: PC Windows
: High major
Target Milestone: ---
Assignee: Joel Martinez
Depends on:
Reported: 2014-03-14 19:16 UTC by Jason Smith [MSFT]
Modified: 2014-09-24 16:48 UTC (History)
2 users (show)

Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.

Please create a new report on GitHub or Developer Community with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:

Description Jason Smith [MSFT] 2014-03-14 19:16:45 UTC
We have several interfaces in a project which are internal and are used to perform communication between different parts of the internal implementation. mdoc does not attempt to document the interfaces themselves, but it does document that the type implements the internal interface, AND documents the methods in the interface which are explicitly implemented on the type. This results in the user seeing implementation details that are completely inaccessible to them.

Example would look like

internal interface IFoo {
    void Bar ();

public class Baz : IFoo {
    void IFoo.Bar () {}

Because the interface is internal, and the class Baz implements IFoo explicitly, nothing about IFoo is ever exposed to the user in the API. They have no realistic way of calling Baz.Bar () because the interface is internal and the implementation is explicit. Essentially they cant do ((IFoo)new Baz ()).Bar () becausae IFoo is inaccessible.
Comment 1 Joel Martinez 2014-09-24 16:48:14 UTC
This is resolved with this pull request: https://github.com/mono/mono/pull/1306

You would of course need to either build and install a custom mono based on commit c02be1018dfd67be86a3b25751b4d1ff13e59ca1, or wait until a version of mono is released that contains this change, in order to take advantage of this fix.