1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
6 using System.ComponentModel.Composition.Hosting;
\r
7 using System.ComponentModel.Composition.Primitives;
\r
9 namespace System.ComponentModel.Composition.ReflectionModel
\r
11 internal class PartCreatorExportDefinition : ExportDefinition
\r
13 private readonly ExportDefinition _productDefinition;
\r
14 private IDictionary<string, object> _metadata;
\r
16 public PartCreatorExportDefinition(ExportDefinition productDefinition)
\r
19 this._productDefinition = productDefinition;
\r
22 public override string ContractName
\r
26 return CompositionConstants.PartCreatorContractName;
\r
30 public override IDictionary<string, object> Metadata
\r
34 if (this._metadata == null)
\r
36 var metadata = new Dictionary<string, object>(this._productDefinition.Metadata);
\r
37 metadata[CompositionConstants.ExportTypeIdentityMetadataName] = CompositionConstants.PartCreatorTypeIdentity;
\r
38 metadata[CompositionConstants.ProductDefinitionMetadataName] = this._productDefinition;
\r
40 this._metadata = metadata.AsReadOnly();
\r
42 return this._metadata;
\r
46 internal static bool IsProductConstraintSatisfiedBy(ImportDefinition productImportDefinition, ExportDefinition exportDefinition)
\r
48 object productValue = null;
\r
49 if (exportDefinition.Metadata.TryGetValue(CompositionConstants.ProductDefinitionMetadataName, out productValue))
\r
51 ExportDefinition productDefinition = productValue as ExportDefinition;
\r
53 if (productDefinition != null)
\r
55 return productImportDefinition.IsConstraintSatisfiedBy(productDefinition);
\r