2012-02-08 4 views
2

私はこれが簡単だと思ったが、多くのページをスキャンした後、私の助けにはならなかった。TypeCatalogの使用

私には以下のテスト方法があります。 aCatalog.Parts.Count 3(そのうちの一つが[Export(typeof(ISystemIndex))]で飾られたクラスから来て、定義された/エクスポートワットベースから継承したクラスから他の2)である

var tCatalog = new TypeCatalog(typeof (ISystemIndex)); 
var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly); 

tCatalog.Partsは、空にアップします

は、私が何をしています違う?何らかの形でTypeCatalogを初期化する必要がありますか?

私が解決しようとしている問題は、アセンブリ内にエクスポート可能なクラスのサブセットを持つカタログを作成することです。

ありがとうございます。

答えて

4

インターフェイスを装飾する[Export]属性がないため、インターフェイス定義にはTypeCatalogを作成しようとしています。

あなたは

[Export(typeof(ISystemIndex))] 
public class MySystemIndex : ISystemIndex 
{ 
} 

ようなクラスを持っていたあなたは

var tCatalog = new TypeCatalog(typeof(MySystemIndex)); 

は、あなたが tCatalog.Partsでそれを見ていたタイプのカタログを作成したい場合。

EDIT

あなたが(例えば、あなたの場合には、輸出のみ)、MEFのドキュメントをチェックアウトし、一定の基準によってフィルタリングカタログを持っているしたい場合についてFiltering Catalogs

+0

'輸出のポイントは何ですか'typeof(ISystemIndex)'ではなく、 'typeof(MySystemIndex)'に直接 'TypeCatalog'を構築すれば' – ProfK

+1

@ProfK TypeCatalogに渡される型は、エクスポートを探すためにどの型を反映するかをカタログに伝えるだけです。エクスポート属性がない場合、カタログにはパーツは含まれません。 –