Compose Method

CompositionContainer.Compose Method

Adds or removes the parts in the specified CompositionBatch from the container and executes composition.

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

public void Compose(
	CompositionBatch batch


Type: System.ComponentModel.Composition.Hosting.CompositionBatch
Changes to the CompositionContainer to include during the composition.

This method is the primary way of directly adding or removing parts from the container. The CompositionContainer will always maintain a stable, composed state. Therefore, calling Compose with an empty CompositionBatch is never necessary to start composition. Instead, call the Compose method whenever you need to make changes to the parts available to the CompositionContainer.

The CompositionBatch can contain both parts to be added and parts to be removed. Recomposition will take place only once for each call to Compose.

In this simple example, three parts are created and added to the CompositionContainer, and one part is retrieved to show that all imports have been filled. This example uses the Attributed Programming Model.

class Part1
    public String data = "This is the example data!";

class Part2
    public Part1 data { get; set; }


class Part3
    public Part2 data { get; set; }

class Program
    static void Main(string[] args)
        CompositionContainer container = new CompositionContainer();
        CompositionBatch batch = new CompositionBatch();
        batch.AddPart(AttributedModelServices.CreatePart(new Part1()));
        batch.AddPart(AttributedModelServices.CreatePart(new Part2()));
        batch.AddPart(AttributedModelServices.CreatePart(new Part3()));
        Part3 _part = container.GetExportedValue<Part3>();

.NET Framework

Supported in: 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Community Additions

© 2016 Microsoft