MEF .NET Core как экспортировать CompositionHost?

#c# #.net #.net-core #mef #.net-standard

#c# #.net #.net-core #mef #.net-стандартный

Вопрос:

У меня есть следующий код:

 var configuration = new ContainerConfiguration().WithAssemblies(filteredLibraries, conventionBuilder);
CompositionHost container = configuration.CreateContainer();
  

Один из экспортируемых классов следующий:

     [Export(typeof(IClass1))]
    public class Class1 : IClass1
    {
        private readonly CompositionHost _host;
        public Class1(CompositionHost host)
        {
            _host = host;
        }
    }
  

Как экспортировать этот контейнер в себя?

Ответ №1:

Я думаю, что хост экспортируется не как CompositionHost , а как CompositionContext . Вам также не хватает [ImportingConstructor] атрибута.

Итак, код будет выглядеть следующим образом:

 [Export(typeof(IClass1))]
public class Class1 : IClass1
{
    private readonly CompositionContext _compositionContext;

    [ImportingConstructor]
    public Class1(CompositionContext compositionContext)
    {
        _compositionContext = compositionContext;
    }
}