private static CompositionResult <IEnumerable <Export> > TryGetExports(ExportProvider provider, ComposablePart part, ImportDefinition definition, AtomicComposition atomicComposition) { try { var exports = provider.GetExports(definition, atomicComposition).AsArray(); return(new CompositionResult <IEnumerable <Export> >(exports)); } catch (ImportCardinalityMismatchException ex) { // Either not enough or too many exports that match the definition CompositionException exception = new CompositionException(ErrorBuilder.CreateImportCardinalityMismatch(ex, definition)); return(new CompositionResult <IEnumerable <Export> >( ErrorBuilder.CreatePartCannotSetImport(part, definition, exception))); } }
public CompositionResult TrySetImport(ImportDefinition import, Export[] exports) { try { Part.SetImport(import, exports); UpdateDisposableDependencies(import, exports); return(CompositionResult.SucceededResult); } catch (CompositionException ex) { // Pulling on one of the exports failed return(new CompositionResult( ErrorBuilder.CreatePartCannotSetImport(Part, import, ex))); } catch (ComposablePartException ex) { // Type mismatch between export and import return(new CompositionResult( ErrorBuilder.CreatePartCannotSetImport(Part, import, ex))); } }