2010-12-11 6 views
2

ほとんどの場合、無条件でエクスポートをインポートします。 いくつかの設定をインポートします。MEFで輸出者にパラメータを渡して部品をインポートする方法は?

問題はエクスポート側です。正しい設定を取得するためにパラメータを渡す必要があります。ここにエクスポートされた関数です:

私の質問は、エクスポートされた関数にパラメータを渡す方法です。私は、輸入者のコンストラクタ内でエクスポートされた関数(パラメータを受け入れる)を使用することに注意してください。

答えて

6

あなたができることはFunc<T, U>で、MEFはあなたの代理人を処理します。たとえば:その例で

public class FirstClass 
{ 
    [Export("Method")] 
    public string Method(string arg) 
    { 
    return arg.ToUpperInvariant(); 
    } 
} 

public class SecondClass 
{ 
    [Import("Method")] 
    public Func<string, string> Func; 
} 

、私は名前の契約をエクスポートすることだし、MEFは、自動的に私のための目標デリゲートを配線する方法を決定します。私はExportFunc<string, string>とすることもできます。

だからあなたの場合には、私はにあなたのExportを変更します

[Export("GetConfiguration")] 

そして、あなたのImportとにプロパティをターゲット:

[Import("GetConfiguration")] 
public Func<string, Configuration> GetConfig { get; set; } 

単にインポート機能を実行するために、デリゲートを使用します。

希望に役立ちます。

関連する問題