私はプラグインシステムにMEF(C#4.0)を使用しています。時には、(主にXMLの逆シリアル化のために)すべてのプラグインの派生型のリストを取得する必要があります。プラグインをインスタンス化せずにこれを行うことはできますか?MEFプラグインクラスのタイプを特定する方法は?
これは動作しますが、インスタンス化が必要になります。
var cat = new DirectoryCatalog(path, "*.dll");
var container = new CompositionContainer(cat);
container.ComposeParts(this);
foreach (var plugin in Plugins)
{
// Would be better if this could be done via Metadata!
DoStuff(plugin.Value.GetType());
}
// ...
[ImportMany]
public Lazy<PluginBase, IPluginMetadata>[] Plugins
{
get;
private set;
}
Q:が、それはいくつかのExportAttribute
、またはいくつかの他の技術によって、これを達成することは可能ですか?
ありがとうございました。
[OK]をクリックします。ただし、この場合、これを各派生クラスに追加する必要があります。 – l33t
@NOPslider:はい。 –
それはあまりにも悪いです:Pしかし、私はそれがなぜそう理解します。ありがとう。 – l33t