CompositionHost Class


Provides static methods to control the container used by CompositionInitializer.


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

Public NotInheritable Class CompositionHost

Public methodStatic memberInitialize(ComposablePartCatalog())Sets CompositionInitializer to use a new container initialized with the specified catalogs.
Public methodStatic memberInitialize(CompositionContainer)Sets CompositionInitializer to use the specified container.

By default, calls to SatisfyImports use a default container initialized with all the parts available in the application. By calling the Initialize method, you can override that default container in two ways.

First, calling Initialize with a set of catalogs creates a new container initialized with those catalogs. This allows the developer more control over which parts are included in the container, and can be useful for application partitioning.

Second, calling Initialize with a container sets that container to be used with CompositionInitializer, giving the developer complete control over the container's behavior.

The following code creates a catalog from the current assembly and sets it for use by CompositionInitializer.

Partial Public Class MainPage
    Inherits UserControl

    Public Property addIn As MyAddIn

    Public Sub New()
        Dim catalog As AggregateCatalog = New AggregateCatalog()
        catalog.Catalogs.Add(New AssemblyCatalog(Me.GetType().Assembly))

        'Override the default host with one created with this catalog.


    End Sub

End Class

Public Class MyAddIn

    Public Property subOne As MySubOne

    Public Property subTwo As MySubTwo

    Public Function getTheData() As String
        'This is safe, because MEF guarantees this
        'object will never be created with null references!
        'If it can't fill those imports, composition
        'will fail.
        Return + " " +
    End Function

End Class

Public Class MySubOne
    Public data = "Sub One String!"
End Class

Public Class MySubTwo
    Public data = "Sub Two String!"
End Class


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