Exemplo n.º 1
0
        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)));
     }
 }