Я прочитал все вопросы, которые я могу найти по вопросам создания импорта, не экспортируя содержащий класс, но я не могу найти решение моей проблемы. Кто-нибудь знает способ добиться того, что я пытаюсь сделать?Проблемы с созданием импорта MEF
Модные сборки имеют формы и классы, которые они используют внутри. Эти формы должны иметь доступ к некоторым из экспортированных контрактов, но импорт не загружены, поскольку они не находятся в МЭФ «композиции дерева»
сборки Ведущий: сборочный
public class Host
{
public Host()
{ /* Compose parts here... */ }
[Export(typeof(Licence))]
public Licence LoadedLicence { get; set; }
[Export(typeof(IModule))]
public List<IModule> LoadedModules { get; set; }
}
Модуль:
[Export(typeof(IModule))]
public class Module : IModule
{
public Module() { }
public void DoSomething()
{
SubForm sub = new SubForm();
sub.ShowDialog();
}
[Import(typeof(Licence))]
public Licence LoadedLicence { get; set; } // This works here
}
public class SubForm : Form
{
public SubForm()
{ }
[Import(typeof(Licence))]
public Licence LoadedLicence { get; set; } // This doesn't work in here
}
Насколько я могу судить, мои варианты:
- Передача параметров конструкторам (боль)
- Использовать фиктивный экспорт на классы, требующие импорта, удовлетворяющие требованиям?
Любые другие?