0

私のプログラムでは、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 を呼び出してみましたが、うまくいきませんでした。

4

1 に答える 1

1

メンバ関数呼び出しをコンストラクタからフォーム ロード メソッドに移動することで、この問題を解決しました。

于 2012-12-07T11:00:36.307 に答える