日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。MEFずいぶん長いこと、MEFの記事をほったらかしていました。自分でも記事書いてたことを忘れてました。初期化を遅延するということです。普通は、初期化といったらこんな感じですよね。Hoge();さて、上記のプログラムでHogeクラスの初期化を行いましたが、このhoge変数がいつ使われるのかというのは謎です。その直後に使われるのか?それとも10000行後で使われるのか?それとも特定のボタンが押されるまで出番はないのか?と色々なケースが考えられます。今回の例みたいにHogeクラス1つだったら大して気になりませんが。初期化するオブジェクト数が1000とかになってくると、1つのオブジェクトの初期化処理が10msくらいかかるとして10秒初期化だけでかかってしまいます。そんなとき、ぱっと考え付くのが、必要になったら作ればいいじゃん?という解決策です。そんなプログラムを書くときに使われるテクニックで以下のようなプログラムを書くこともあったりします。Frameworkには用意されています。Lazyという名前のクラスがそいつになります。いうことで早速使ってみましょう。}}使い方は簡単でLazyのように書きます。コンストラクタでデリゲートを渡してデフォルトのコンストラクタ以外で初期化したり、初期化時に特定のメソッドを呼んだりとか色々できるようになってます。上記の実行結果を以下に示します。Lazy<Hoge>を作成しましたHogeが作成されましたLazySample.Hoge---------------------------------Lazy<Hoge>を作成しましたHoge(10)が作成されましたLazySample.HogeLazyのインスタンスを初期化したタイミングではなく、LazyのValueプロパティにアクセスしたタイミングで初めてインスタンスが作成されていることがわかります。これがMEFにどうつながっていくのかというと、プラグインの多いプログラムを作る際に起動時に全部のプラグインを初期化してたら起動処理が凄い時間になってしまうという問題点や、使わないプラグインもメモリ上に乗ってしまうという問題がおきたりします。いうときにLazyを使うと、プラグインが必要になるタイミングまでインスタンスが作られないという処理が簡単に出来るようになります。いうことで次回は、LazyをMEFで使ってみようと思います。サンプルコードの入手コチラからダウンロードできます。まとめMEFの入門記事のまとめです。その11「拡張可能アプリケーショ...これまで、10回にわたってMEFについて書いてきました。C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。Blogの内容は個人の見解であり、所属する企業を代表するものではありません。)はてなブログをはじめよう!okazukiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。