BT

C#とVisual BasicへのMixin

| 作者: Jonathan Allen フォローする 530 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2011年7月5日. 推定読書時間: 1 分 |

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

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT