Извините, если этот вопрос уже задавался 100 раз, но я действительно изо всех сил пытаюсь заставить его работать.
Скажем, у меня есть три проекта.
- Core.dll
- Shell.exe
- Загружает все модули в папке сборки.
- Ссылки Core.dll
- ModuleA.dll
- Имя экспорта, версия модуля.
- Ссылки Core.dll
Shell.exe имеет [Export], который содержит один экземпляр стороннего приложения, который мне нужно внедрить во все загруженные модули.
Пока что код, который у меня есть в Shell.exe:
static void Main(string[] args)
{
ThirdPartyApp map = new ThirdPartyApp();
var ad = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var dircatalog = new DirectoryCatalog(".");
var a = new AggregateCatalog(dircatalog, ad);
// Not to sure what to do here.
}
class Test
{
[Export(typeof(ThirdPartyApp))]
public ThirdPartyApp Instance { get; set; }
[Import(typeof(IModule))]
public IModule Module { get; set; }
}
Мне нужно создать экземпляр Test и загрузить Instance
с map
из метода Main
, затем загрузить модуль из ModuleA.dll, который находится в каталоге выполнения, затем [Import] Instance
в загруженный модуль.
В ModuleA
У меня есть такой класс:
[Export(IModule)]
class Module : IModule
{
[Import(ThirdPartyApp)]
public ThirdPartyApp Instance {get;set;}
}
Я знаю, что я на полпути, я просто не знаю, как все это собрать, в основном с загрузкой теста с экземпляром map
из Main
.
Может ли кто-нибудь помочь мне с этим.