Possible MONO Portability Problem

Topics: Development
Aug 20, 2009 at 8:59 PM

So I had started some work on converting all P/INVOKES into C# and while doing so I ran across a possible problem.

Most of the classes at the lower end of the object hierarchy are portable and don't rely on any particular implementation. But the closer you get to the root of the Object hierarchy, (System.Object, System.AppDomain, etc...) the more and more the code becomes integrated into Microsoft's COM and the less compliant it becomes with CLI specification (ECMA-335).

In example, the Mono implementation of System.AppDomain, implements the System._AppDomain interface, which allows the user to Create, Define, Execute, Load, etc... Application Domains. The System._AppDomain interface is a child instance of the Microsoft COM IUnknown interface, and is compiled as such. By removing this you break compatibility with both MONO and the .NET framework, but keeping it makes the entire implementation remain reliant on a thin layer of the CLR framework implemented in C/C++. It could be that im just not seeing the obvious but if it is a problem, a solution should be found. :)

Aug 21, 2009 at 1:39 AM

COM is a binary interface. Therefore COM is unlikely to be supported in MOSA.  Anything behind COM interfaces will have to be re-written in C# (or some other CIL compiled language).