Achieving Interoperability by Bertrand Meyer is part 2 of 3 in a series about Eiffel and multilanguage support in .NET. (Part 1 was covered here at LtU, but I can't find it at the moment). He discusses language interoperability on common runtimes in general, and in particular describes how Eiffel for .NET manages to present a face for its (internal) multiple-inheritance to a single-inheritance world:
At first glance, you may believe that it won't work: The inheritance structure violates the rules of the .NET object model. The only solution, then, is to follow the C++ route and change the programming language, creating a single-inheritance-only variant. (Such a subset, called Eiffel#, was designed for Eiffel as a first iteration of the .NET version. Eiffel# was only a stepping stone and is now obsolete, as Eiffel for .NET now supports the full Eiffel language with multiple inheritance through the techniques explained in the following paragraphs.)
|