| File: System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs | Web Access |
| Project: src\runtime\src\libraries\System.ComponentModel.Composition\src\System.ComponentModel.Composition.csproj (System.ComponentModel.Composition) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.ComponentModel.Composition.Primitives; using System.Linq; using Microsoft.Internal; namespace System.ComponentModel.Composition.Hosting { public partial class CompositionBatch { // Represents a part that exports a single export private sealed class SingleExportComposablePart : ComposablePart { private readonly Export _export; public SingleExportComposablePart(Export export) { ArgumentNullException.ThrowIfNull(export); _export = export; } public override IDictionary<string, object?> Metadata { get { return MetadataServices.EmptyMetadata; } } public override IEnumerable<ExportDefinition> ExportDefinitions { get { return new ExportDefinition[] { _export.Definition }; } } public override IEnumerable<ImportDefinition> ImportDefinitions { get { return Enumerable.Empty<ImportDefinition>(); } } public override object? GetExportedValue(ExportDefinition definition) { Requires.NotNull(definition, nameof(definition)); if (definition != _export.Definition) { throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart(nameof(definition)); } return _export.Value; } public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports) { Requires.NotNull(definition, nameof(definition)); Requires.NotNullOrNullElements(exports, nameof(exports)); throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart(nameof(definition)); } } } }