Multiple inheritance mapping to .NET

Goals

Our goal is to generate a mapping that is both:

  1. Efficient
  2. CLS compliant

Efficiency is always important for a compiler, no one wants their code to run slowly because the compiler did a very bad job at generating the code. Here efficiency means to generate as few as possible interfaces to map the Eiffel classes.

CLS compliant is very important for people who choose Eiffel as a programming language (mostly because of its benefits: assertions, genericity,...) and who want to produce reusable components.

So far we have two methods and we have decided to go with the second one which enables an easy implementation and multiple inheritance between classes of different assemblies generated by our Eiffel compiler: