即使在调用SatisfyImportOnce - MEF之后,对象仍为null

时间:2012-12-07 08:29:46

标签: c# mef

在我的程序中,我在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但没有运气。

1 个答案:

答案 0 :(得分:1)

我通过将构件函数调用从构造函数移动到表单加载方法

来解决了这个问题