Есть несколько способов сделать это.
Во-первых, вам нужно определить общий интерфейс, который понимают обе сборки.Это может быть библиотека «PublicInterfaces», на которую ссылаются обе эти сборки, или она может быть внутри сборки A (B ссылается на A, но не наоборот).
В B экспортируйте тип, используя этуinterface.
B должен быть в каталоге контейнера.Либо ссылаться на сборку B явно в AssemblyCatalog
, либо создать DirectoryCatalog
и указать его на каталог, который будет содержать сборку B.
В A вместо использования атрибутов импорта в вызове кода GetExportedValue<T>()
на контейнере.Код выглядит примерно так:
// Known by A and B
public interface CommonInterface
{
// ...
}
// In B, not A
[Export(typeof(CommonInterface))]
public class BClass : CommonInterface
{
// ...
}
// In A where you want to manually create class B
CommonInterface objB = _container.GetExportedValue<CommonInterface>();