BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース C#とVisual BasicへのMixin

C#とVisual BasicへのMixin

原文(投稿日:2011/06/29)へのリンク

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プレゼンテーションでより詳細に学ぶことができる。

この記事に星をつける

おすすめ度
スタイル

BT