エクスポートとインポートで見つかったメタデータに基づいて条件付きでエクスポートする ExportProvider を作成しようとしています。メタデータのエクスポートは簡単です:
[Export(typeof(ITestExport))]
[TestExportMetadata(MetadataStr = "A", MetadataInt = 2)]
public class TestExportClass1 : ITestExport
{
}
エクスポート メタデータを調べて、それに基づいてエクスポートを提供するのは簡単です。インポートのためにやりたいことは、おそらく次のようなものです。
public class TestImportClass1
{
[Import(typeof(ITestExport))]
[TestImportMetadata(MetadataStr = "A", MetadataInt = 2)]
ITestExport MyExportedValue { get; set; }
}
ここでは、TestImportMetadata の実際の署名は重要ではありませんが、インポートになんらかのメタデータを提供し、そのインポートを満たすときにそれを参照できるようにしたいと考えています。残念ながら、エクスポートと同様にメタデータをインポートに適用するための設計された同等のプロセスはないようです。
ExportProvider 基本クラスは、抽象メソッドを提供します。
protected abstract IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition);
このメソッドに提供される ImportDefinition は、直接または間接的に、メタデータまたは少なくとも ImportAttribute 自体に何らかのアクセスを提供すると思いますが、そうではないようです。
これが私が説明した方法では不可能である場合、インポートを満たすために、インポートメタデータを提供してアクセスするための代替方法を誰かが考えられますか?