<< 【雑記】Googleのトップページがパックマンになってる! | main | 【.NET Framework 4】.NET Framework 4 技術資料一覧 >>

【MEF】ContractBasedImportDefinition クラス

JUGEMテーマ:コンピュータ

http://mef.codeplex.com/wikipage?title=FAQ&referringTitle=Guide
CodePlexの上記のページを眺めていたらContractBasedImportDefinitionの引数が微妙に違うことに気づき、.NET Framework 4のMEFはどう書くんだろうか気になったのでためしにコードを書いてみました。

using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition.Primitives;
using System.Linq;
using System.Text;

namespace Art55.MEFSample20100522_001
{
    class Program
    {
        static void Main(string[] args)
        {
            var catalog = new TypeCatalog(new[] { typeof(A), typeof(B) });
            var container = new CompositionContainer(catalog);
            var importDefinition = new ContractBasedImportDefinition(
                AttributedModelServices.GetContractName(typeof(A)),
                AttributedModelServices.GetTypeIdentity(typeof(A)),
                Enumerable.Empty<KeyValuePair<string, Type>>(),
                ImportCardinality.ExactlyOne,
                false,
                false,
                CreationPolicy.Shared);
            Export export = container.GetExports(importDefinition).First();
            A a = (A) export.Value;
            a.Say();
        }
    }

    [Export]
    class A
    {
        [Import]
        public B BObject { private get; set; }
        public void Say()
        {
            BObject.Say();
        }
    }

    [Export]
    class B
    {
        public void Say()
        {
            Console.WriteLine("B Say.");
        }
    }
}

実行すると

B Say.

とまあいつものとおり動きました。

ExportProvider.GetExports メソッド (ImportDefinition)は指定したインポート定義の条件に一致するすべてのエクスポートを取得します。との事なので属性付きプログラミングモデル以外で自作でExportProviderを自作したい場合に何らかの方法でImportが指定されたプロパティなどからImportDefinitionを作成して、GetExports メソッドを呼び出せばいいかなーなんて・・・・たぶん。



コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< August 2010 >>
あわせて読みたい
あわせて読みたいブログパーツ
selected entries
categories
archives
recent comment
recent trackback
recommend
キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。
recommend
ビジュアライジング・データ ―Processingによる情報視覚化手法
ビジュアライジング・データ ―Processingによる情報視覚化手法 (JUGEMレビュー »)
Ben Fry
javaぽい言語Processingを用いたビジュアライジングデータ。タイトルの通りいかにデータを視覚化するかというところを解説した本、手法やプロセスに対して丁寧でかつ具体的な例を挙げているのでわかりやすく、また応用が利きます。すばらしい本です。
recommend
recommend
recommend
recommend
recommend
recommend
Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰
recommend
recommend
recommend
Design rule index―デザイン、新・100の法則
Design rule index―デザイン、新・100の法則 (JUGEMレビュー »)
William Lidwell,Kritina Holden,Jill Butler
ユーザインターフェイス、ユーザビリティなどを考えたいならこの本をヒントにしてみるのも良いかと思います。
recommend
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
リファクタリング―プログラムの体質改善テクニック (Object Technology Series) (JUGEMレビュー »)
マーチン ファウラー,Martin Fowler,児玉 公信,平澤 章,友野 晶夫,梅沢 真史
Javaで書かれていますが、良本です。言語を覚えたら、まずこの本を読んでみましょう。
recommend
集合知プログラミング
集合知プログラミング (JUGEMレビュー »)
Toby Segaran
・・・挫折中の一本。
recommend
C#ではじめるWebサービスプログラミング
C#ではじめるWebサービスプログラミング (JUGEMレビュー »)
山崎 秀,笠原 一浩
動くモノが作れるから楽しい、この本で実現しましょう!
recommend
C#クックブック 第3版
C#クックブック 第3版 (JUGEMレビュー »)
Jay Hilyard,Stephen Teilhet
C#2.0からの移行を考えているならこの本がお勧めです。
recommend
LINQテクノロジ入門~Microsoft Visual Studio 2008による新たなクエリ構築技法~ (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ)
LINQテクノロジ入門~Microsoft Visual Studio 2008による新たなクエリ構築技法~ (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (JUGEMレビュー »)
赤間信幸
LINQ最強の入門本です。LINQの処理をイメージをわかりやすく解説されています。また、著者の赤間さんはわかりやすい解説をされることで超有名です。
recommend
Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net)
Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net) (JUGEMレビュー »)
Jr. Rattz Joseph C.
LINQをしっかり学びたい方にお勧めします。
recommend
recommend
WPF Recipes in C# 2008: A Problem-Solution Approach (Expert's Voice in .Net)
WPF Recipes in C# 2008: A Problem-Solution Approach (Expert's Voice in .Net) (JUGEMレビュー »)
Sam Noble,Sam Bourton,Allen Jones
WPFの基礎を一通り学習したら、この本を手に取りましょう。WPFのHowToやDeepな情報を得ることが出来ます。かなりお勧めです。
(注意:サンプルコードのレイアウト設計は間違ってるので注意です)
links
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
JUGEMのブログカスタマイズ講座