1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
6 using System.ComponentModel.Composition.Primitives;
\r
8 using Microsoft.Internal;
\r
10 namespace System.ComponentModel.Composition.Hosting
\r
12 partial class CompositionBatch
\r
14 // Represents a part that exports a single export
\r
15 private class SingleExportComposablePart : ComposablePart
\r
17 private readonly Export _export;
\r
19 public SingleExportComposablePart(Export export)
\r
21 Assumes.NotNull(export);
\r
23 this._export = export;
\r
26 public override IDictionary<string, object> Metadata
\r
28 get { return MetadataServices.EmptyMetadata; }
\r
31 public override IEnumerable<ExportDefinition> ExportDefinitions
\r
33 get { return new ExportDefinition[] { _export.Definition }; }
\r
36 public override IEnumerable<ImportDefinition> ImportDefinitions
\r
38 get { return Enumerable.Empty<ImportDefinition>(); }
\r
41 public override object GetExportedValue(ExportDefinition definition)
\r
43 Requires.NotNull(definition, "definition");
\r
45 if (definition != _export.Definition)
\r
47 throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
\r
50 return _export.Value;
\r
53 public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
\r
55 Requires.NotNull(definition, "definition");
\r
56 Requires.NotNullOrNullElements(exports, "exports");
\r
58 throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
\r