そうですね、これは難しいものでしたが、ここでは参考にしています。
var importDefinition = new ImportDefinition(e => true, obj.GetType().FullName, ImportCardinality.ZeroOrMore, false, false);
var objectsWithMethods = container.GetExports(importDefinition)
.Where(x => x.Value is IYourInterface)
.Select(x => x.Value)
.ToList();
これは、方法を取得します。
これは私たちが望むのインポートを設定します。
あなたがしなければならないのは、CreateDelegate正しい方法をExportedDelegateにMEFから返された値をキャストして呼び出すことです上記の見つかったオブジェクト(objectsWithMethodを使用してforeachの中でobjectsWithMethodsを反復):
var endPointsImportDefinition = new ImportDefinition(e => true, objectsWithMethod.GetType().FullName, ImportCardinality.ZeroOrMore, false, false);
var endPoints = container.GetExports(endPointsImportDefinition)
.Where(x => x.Value is ExportedDelegate)
.Select(x => x.Value)
.ToList();
そして最後に、あなたがメタを実行することができますMETHODINFOを(取得しますOD)あなたが使用します。
var endPointMethod = (endPoint as ExportedDelegate).CreateDelegate(typeof(Delegate)).GetMethodInfo();
も何ができるか:
var endPointMethod = (endPoint as ExportedDelegate).CreateDelegate(typeof(Delegate)).Method;
それは誰にもお役に立てば幸い!
[MEFで関数をエクスポートしてインポートするにはどうすればいいですか?](http://stackoverflow.com/questions/3814839/how-to-export-import-functions-and-execute-them-with -mef) – FCin
私は仲間が必要なわけではないので、私はこのメソッドをプログラマチックに実行し、コンテナから直接取得する必要があります。 –
なぜですか?あなたはただそれをインポートすることはできません。あなたを止めるのは何ですか? – FCin