.NET Framework をターゲットとするコードから .NET Core にコードを移植しようとしていますが、これには MEF1 から MEF2 への切り替えが含まれます。.NET Core での MEF の使用に関するドキュメントはそれほど多くないようです。また、MEF1 で可能だったようにパーツを除外する方法を示す例も見つかりません。
元のコード (MEF1 を使用) では、アセンブリのセットからエクスポートされたMockCommunicationService
. これを次のように実装しました。
// Filter out invalid exports.
Func<ComposablePartDefinition, bool> partFilter = it => !it.ToString().Contains(nameof(MockCommunicationService));
var assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var catalog = new DirectoryCatalog(assemblyPath).Filter(partFilter);
var container = new CompositionContainer(catalog);
これに相当するのは MEF2 では何ですか? おそらく を使用する必要があると思いますが、「 xConventionBuilder
以外のすべてを許可する」という行に沿って規則を定義する方法があるかどうかはわかりません。
理想的には、次のようなものが素晴らしいでしょう:
var conventions = new ConventionBuilder();
conventions.ForType<MockCommunicationService>().SuppressExports();
var configuration = new ContainerConfiguration()
.WithAssemblies(assemblies, conventions);