Export (0) Print
Expand All

CompositionContainer Class

Manages composition of parts.

System.Object
  System.ComponentModel.Composition.Hosting.ExportProvider
    System.ComponentModel.Composition.Hosting.CompositionContainer

Namespace:  System.ComponentModel.Composition.Hosting
Assembly:  System.ComponentModel.Composition (in System.ComponentModel.Composition.dll)

public class CompositionContainer : ExportProvider, 
	ICompositionService, IDisposable

The CompositionContainer type exposes the following members.

  NameDescription
Public methodCompositionContainer()Initializes a new instance of the CompositionContainer class.
Public methodCompositionContainer(ExportProvider[])Initializes a new instance of the CompositionContainer class with the specified export providers.
Public methodCompositionContainer(ComposablePartCatalog, ExportProvider[])Initializes a new instance of the CompositionContainer class with the specified catalog and export providers.
Public methodCompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])Initializes a new instance of the CompositionContainer class with the specified catalog, thread-safe mode, and export providers.
Top

  NameDescription
Public propertyCatalogGets the ComposablePartCatalog that provides the container access to Export objects.
Public propertyProvidersGets the export providers that provide the container access to additional ComposablePartCatalog objects.
Top

  NameDescription
Public methodComposeExecutes composition on the container, including the changes in the specified CompositionBatch.
Public methodDispose()Releases all resources used by the current instance of the CompositionContainer class.
Protected methodDispose(Boolean)Releases the unmanaged resources used by the CompositionContainer and optionally releases the managed resources.
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetExport<T>()Returns the export with the contract name derived from the specified type parameter. If there is not exactly one matching export, an exception is thrown. (Inherited from ExportProvider.)
Public methodGetExport<T>(String)Returns the export with the specified contract name. If there is not exactly one matching export, an exception is thrown. (Inherited from ExportProvider.)
Public methodGetExportedValue<T>()Returns the exported object with the contract name derived from the specified type parameter. If there is not exactly one matching exported object, an exception is thrown. (Inherited from ExportProvider.)
Public methodGetExportedValue<T>(String)Returns the exported object with the specified contract name. If there is not exactly one matching exported object, an exception is thrown. (Inherited from ExportProvider.)
Public methodGetExportedValueOrDefault<T>()Gets the exported object with the contract name derived from the specified type parameter or the default value for the specified type, or throws an exception if there is more than one matching exported object. (Inherited from ExportProvider.)
Public methodGetExportedValueOrDefault<T>(String)Gets the exported object with the specified contract name or the default value for the specified type, or throws an exception if there is more than one matching exported object. (Inherited from ExportProvider.)
Public methodGetExportedValues<T>()Gets all the exported objects with the contract name derived from the specified type parameter. (Inherited from ExportProvider.)
Public methodGetExportedValues<T>(String)Gets all the exported objects with the specified contract name. (Inherited from ExportProvider.)
Public methodGetExports(ImportDefinition)Gets all exports that match the conditions of the specified import definition. (Inherited from ExportProvider.)
Public methodGetExports(ImportDefinition, AtomicComposition)Gets all exports that match the conditions of the specified import definition and composition. (Inherited from ExportProvider.)
Public methodGetExports(Type, Type, String)Gets all the exports with the specified contract name. (Inherited from ExportProvider.)
Public methodGetExports<T>()Gets all the exports with the contract name derived from the specified type parameter. (Inherited from ExportProvider.)
Public methodGetExports<T>(String)Gets all the exports with the specified contract name. (Inherited from ExportProvider.)
Protected methodGetExportsCoreReturns a collection of all exports that match the conditions in the specified ImportDefinition object. (Overrides ExportProvider.GetExportsCore(ImportDefinition, AtomicComposition).)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnExportsChangedRaises the ExportsChanged event. (Inherited from ExportProvider.)
Protected methodOnExportsChangingRaises the ExportsChanging event. (Inherited from ExportProvider.)
Public methodReleaseExport(Export)Releases the specified Export object from the CompositionContainer.
Public methodReleaseExport<T>(Lazy<T>)Removes the specified export from composition and releases its resources if possible.
Public methodReleaseExports(IEnumerable<Export>)Releases a set of Export objects from the CompositionContainer.
Public methodReleaseExports<T>(IEnumerable<Lazy<T>>)Removes a collection of exports from composition and releases their resources if possible.
Public methodReleaseExports<T, TMetadataView>(IEnumerable<Lazy<T, TMetadataView>>)Removes a collection of exports from composition and releases their resources if possible.
Public methodSatisfyImportsOnceSatisfies the imports of the specified ComposablePart object without registering it for recomposition.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodTryGetExportsGets all the exports that match the conditions of the specified import. (Inherited from ExportProvider.)
Top

  NameDescription
Public eventExportsChangedOccurs when the exports in the ExportProvider change. (Inherited from ExportProvider.)
Public eventExportsChangingOccurs when the provided exports are changing. (Inherited from ExportProvider.)
Top

  NameDescription
Public Extension MethodComposeExportedValue<T>(T)Overloaded. Creates a part from the specified value and composes it in the specified composition container. (Defined by AttributedModelServices.)
Public Extension MethodComposeExportedValue<T>(String, T)Overloaded. Creates a part from the specified object under the specified contract name and composes it in the specified composition container. (Defined by AttributedModelServices.)
Public Extension MethodComposePartsCreates composable parts from an array of attributed objects and composes them in the specified composition container. (Defined by AttributedModelServices.)
Public Extension MethodSatisfyImportsOnceComposes the specified part by using the specified composition service, with recomposition disabled. (Defined by AttributedModelServices.)
Top

A CompositionContainer object serves two major purposes in an application. First, it keeps track of which parts are available for composition and what their dependencies are, and serves as the context for any given composition. Second, it provides the methods by which the application can initiate composition, get instances of composed parts, or fill the dependencies of a composable part.

Parts can be made available to the container either directly or through the Catalog property. All the parts discoverable in this ComposablePartCatalog are available to the container to fulfill imports, along with any parts added directly.

The Compose method allows instantiated parts to be added to an existing container. Assuming composition is successful, these parts will have their imports filled with parts retrieved from the container, and their exports will be available to other parts. Imports marked as recomposable will be registered for recomposition.

The SatisfyImportsOnce method allows a part to have its imports filled without being added to the container. If the composition is successful, the part's imports will be filled, but the part's exports will not be available to other parts and no imports will be registered for recomposition.

CompositionContainer objects should always be disposed. When the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

A CompositionContainer object that can be accessed from multiple threads must be constructed with the isThreadSafe parameter set to true. Performance will be slightly impaired, so false is preferred in single-threaded scenarios. The default is false.

In the following example, a CompositionContainer object is initialized with a catalog and is used to fill the imports of a part. This example uses the Attributed Programming Model.

    [Export]
    class MyAddin
    {
        public String myData { get { return "The data!"; } }
    }

    class MyProgram
    {
        [Import]
        public MyAddin myAddin { get; set; }
    }


    class Program
    {
        static void Main(string[] args)
        {
            AggregateCatalog catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
            CompositionContainer _container = new CompositionContainer(catalog);
            MyProgram myProgram = new MyProgram();
            _container.SatisfyImportsOnce(myProgram);
            Console.WriteLine(myProgram.myAddin.myData);
            Console.ReadLine();
        }
    }

Silverlight

Supported in: 5, 4

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Community Additions

ADD
Show:
© 2014 Microsoft