public void GetExportValues_With_A_Predicate_Should_Return_Filtered_Results() { //Arrange var catalog = new AggregateCatalog( new DirectoryCatalog("."), new AssemblyCatalog(Assembly.GetExecutingAssembly())); var container = new CompositionContainer(new AssemblyCatalog(Assembly.GetAssembly(typeof(TestMefExtensionHelpers)))); //Act var myAObjects = container.GetExportValues<MyObjectBaseClass, MyMetadataAttribute>(attribute => attribute.Category == "A"); var myBObjects = container.GetExportValues<MyObjectBaseClass, MyMetadataAttribute>(attribute => attribute.Category == "B"); var myAObjectWithNameTwo = container.GetExportValues<MyObjectBaseClass, MyMetadataAttribute>(attribute => attribute.Category == "A" && attribute.Name == "Two"); //Assert Assert.Equal(2, myAObjects.Count()); Assert.Equal(1, myBObjects.Count()); Assert.Equal(1, myAObjectWithNameTwo.Count()); }