私のプログラムでは、program.csで次のステートメントを使用しています
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var init = new Initializer();
var container = new CompositionContainer(new DirectoryCatalog(Environment.CurrentDirectory));
container.ComposeExportedValue(string.Empty);
container.SatisfyImportsOnce(init);
if (init.PreleminaryCheck())
{
Form1 frm = new Form1();
container.SatisfyImportsOnce(frm);
Application.Run(frm);
}
以下のようなクラスをエクスポートしています
[Export(typeof(DatabaseMaster))]
public class DBManager : DatabaseMaster
[ImportingConstructor]
public DBManager(string filepath = "")
{
DbPath = filepath;
}
問題は、Initializer クラスで初期化された変数のみを取得していることです。フォーム クラスでは、DBManager のインスタンスは常に null です。Form1 変数で SatisfyImportOnce を呼び出してみましたが、うまくいきませんでした。