1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
6 using System.ComponentModel.Composition;
\r
7 using System.ComponentModel.Composition.AttributedModel;
\r
8 using System.ComponentModel.Composition.Hosting;
\r
9 using System.ComponentModel.Composition.Primitives;
\r
11 namespace System.ComponentModel.Composition.Factories
\r
13 internal static partial class PartFactory
\r
15 public static Type GetAttributedExporterType()
\r
17 return typeof(ExportValueTypeFactory);
\r
20 public static ComposablePart CreateAttributed(Type type)
\r
22 var definition = PartDefinitionFactory.CreateAttributed(type);
\r
24 return definition.CreatePart();
\r
27 public static ComposablePart CreateAttributed(object instance)
\r
29 return AttributedModelServices.CreatePart(instance);
\r
32 public static ComposablePart Create()
\r
34 return new NoOverridesComposablePart();
\r
37 public static ComposablePart CreateExporter(string contractName, object value)
\r
39 return CreateExporter(new MicroExport(contractName, value));
\r
42 public static ComposablePart CreateExporter(params MicroExport[] exports)
\r
44 ConcreteComposablePart part = new ConcreteComposablePart();
\r
46 if (exports != null)
\r
48 foreach (var export in exports)
\r
50 foreach (object exportedValue in export.ExportedValues)
\r
52 part.AddExport(ExportFactory.Create(export.ContractName, exportedValue, export.Metadata));
\r
60 public static ImportingComposablePart CreateImporter<T>()
\r
62 string contractName = AttributedModelServices.GetContractName(typeof(T));
\r
64 return CreateImporter(contractName);
\r
67 public static ImportingComposablePart CreateImporterExporter(string exportContractName, string importContractName)
\r
69 return new ImportingComposablePart(exportContractName, ImportCardinality.ExactlyOne, false, importContractName);
\r
72 public static ImportingComposablePart CreateImporter(params string[] contractNames)
\r
74 return new ImportingComposablePart(ImportCardinality.ZeroOrMore, false, contractNames);
\r
77 public static ImportingComposablePart CreateImporter(bool isRecomposable, params string[] contractNames)
\r
79 return new ImportingComposablePart(ImportCardinality.ZeroOrMore, isRecomposable, contractNames);
\r
82 public static ImportingComposablePart CreateImporter(string contractName)
\r
84 return CreateImporter(contractName, ImportCardinality.ZeroOrMore);
\r
87 public static ImportingComposablePart CreateImporter(string contractName, bool isRecomposable)
\r
89 return CreateImporter(contractName, ImportCardinality.ZeroOrMore, isRecomposable);
\r
92 public static ImportingComposablePart CreateImporter(string contractName, ImportCardinality cardinality)
\r
94 return CreateImporter(contractName, cardinality, false);
\r
97 public static ImportingComposablePart CreateImporter(string contractName, ImportCardinality cardinality, bool isRecomposable)
\r
99 return new ImportingComposablePart(cardinality, isRecomposable, contractName);
\r
102 public static ImportingComposablePart CreateImporter(params ImportDefinition[] importDefinitions)
\r
104 return new ImportingComposablePart(importDefinitions);
\r
107 public static ComposablePart CreateDisposable(Action<bool> disposeCallback)
\r
109 return new DisposableComposablePart(disposeCallback);
\r