mono/mono — pull request #863 by alistair (2014-01-06 09:05:45+00:00)
Title: Align behaviour of Type.IsAssignableFrom type loading to that which is similar to MS.NET

Currently mono is more aggressive at fully resolving class information than MS.NET.

In this particular case this means that using Type.IsAssignableFrom will error with missing type information ( or shadow copy CopyFile ) errors if you attempt to determine whether a type (A) is assignable from another type (B) and either of those types has private instance variables with unresolvable types.

The FubuMVC project has a command-line application for running web applications with a Katana web app. This cli app does so by copying itself + dependencies it knows will be required (but not all its dependencies) and then iterating of the Types loaded with a appdomain containing itself + the webapplication looking for an interface of the type expected by the FubuMVC framework. ( IApplicationSource )

I have created a replication of the issue, as a simplified implementation of fubu.exe approach, which demonstrates this is located at https://github.com/alistair/mono_appdomain_investigation/tree/master Sadly I am unsure of the best approach in creating a unit test for this fix within the mono repository.

I have attempted to compromise on performance + correctness so than when both types MonoClass's have been initialized the faster method of comparison will be used. I have not profiled either method nor there frequency of calls within a 'normal' application so can not say what the performance implication are.

I have tested this code by running monodevelop with no issues, but that is a rather limited coverage.

ps. Changing the AppDomain.ShadowCopyFiles property to "false" in my replication project of will show more type information than then it is "true". Please ensure you compile the solution first.