The idea of this abstract class is to make it easy for you to provide filtering logic to pick and choose the parts that are of interest to you. For example, suppose you want a catalog to filter out all services:

privatesealedclassNonServiceCatalog:FilteredCatalog{publicNonServiceCatalog(ComposablePartCatalogcatalogToFilter):base(catalogToFilter){}protectedoverrideboolIsMatch(ExportDefinitionexportDefinition){// in this case, services are identified via some metadatareturn!exportDefinition.Metadata.ContainsKey("Mode");}}

It is entirely possible that you could alter FilteredCatalog such that it is concrete and takes lambdas to filter out parts. However, I prefer the explicit approach because it results in clear code such as:

rootCatalog.Catalogs.Add(newNonServiceCatalog(catalog));

Well, that’s it really. A simple, but effective way of filtering your MEF parts.