Как установить синглтон CreationPolicy в.net-core System.Composition (Mef)

Я конвертирую проект DNX в ядро ​​.net. Из-за изменений зависимости я не могу использовать System.ComponentModel.Composition больше вместо этого нужно использовать перенесенную версию ядра.net System.Composition (который, я считаю, известен как MEF 2).

Однако я не смог найти эквивалентную функциональность в MEF2 для настройки CreationPolicy для синглтона. В MEF1 код

[PartCreationPolicy(CreationPolicy.Shared)]

Как вы можете сделать это в MEF2?

2 ответа

Отвечать самому, так как не получил ни одного ответа, хотя и не очень хороший.

Читая несколько сообщений, создается впечатление, что Default CreationPolicy используется совместно, он же синглтон. Так что, вероятно, просто удаление этой строки будет работать.

MEF2 представил Export Factory, которую можно изучить, чтобы получить более подробную информацию о настройках политики.

Решением является использование класса ConventionBuilder.

Допустим, есть класс под названием AppShell и он реализует интерфейс IAppShell, Чтобы экспортировать его в режиме совместного использования, выполните следующие действия:

var conventionBuilder = new ConventionBuilder();
conventionBuilder.ForTypesDerivedFrom<IAppShell>()
    .Export<AppShell>()
    .Shared();

Затем:

var config = new ContainerConfiguration()
    .WithAssemblies(new[]{ typeof(AppShell).Assembly}, conventionBuilder);
Другие вопросы по тегам