Mixinは、便利で他のクラスでも幅広く使える小さな機能である。多重継承をサポートする言語では、mixinは、2つめのベースクラスとして拡張機能をシンプルに追加することができる。C#とVBは、標準ではこのオプションがなく、mixinは通常、大量のコピー&ペーストで肥大化したベースクラスを使って追加される。コンポジションは、ここではあまり助けにならず、mixinされたメソッドとプロパティは、内部オブジェクトのデリゲートになる必要がある。
re-mixプロジェクトは代替手段を提供する。ランタイムコード生成を使用すると、シンプルなクラスがひとつ以上のmixinクラスと連結する。ここには、複数の公開されたインターフェイスが存在するが、実際には使用しない。代わりにオブジェクトの複合とインターフェイスのマッチングで連結される。
たとえば、クラスの完全なクローンのサポートを追加するmixinが欲しいとする。あなたは、ICloneableと呼ばれるインターフェイスを作成して、CloneableMixinを実装して、mixinマッチングする。CloneableMixinは、自動的にクローン操作を行うことができる親オブジェクトへの参照を取得する。
実行時に任意のクラスとCloneableMixinを含むクラスをmixして新しい型を作成する新しい型は、ベースタイプから継承され、mixinを実装したすべてのインターフェイスを実装する。これらの新しいインターフェイスメソッドはすべてmixinのインスタンスにデリゲートされる。
そのほかのmixinにの用途としては、ベースクラスの振る舞いのオーバーライドがある。このモデルでは、mixinのメソッドは、生成されたクラスのベースクラスをオーバーライドする。
re-mixとmixinについては、Stefan Wenig氏とFabian Schmied氏のLang.NETプレゼンテーションでより詳細に学ぶことができる。