Provides static methods to control the container used by CompositionInitializer.
Assembly: System.ComponentModel.Composition.Initialization (in System.ComponentModel.Composition.Initialization.dll)
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.
The following code creates a catalog from the current assembly and sets it for use by CompositionInitializer.
Partial Public Class MainPage Inherits UserControl <Import()> Public Property addIn As MyAddIn Public Sub New() InitializeComponent() Dim catalog As AggregateCatalog = New AggregateCatalog() catalog.Catalogs.Add(New AssemblyCatalog(Me.GetType().Assembly)) 'Override the default host with one created with this catalog. CompositionHost.Initialize(catalog) CompositionInitializer.SatisfyImports(Me) MessageBox.Show(addIn.getTheData) End Sub End Class <Export()> Public Class MyAddIn <Import()> Public Property subOne As MySubOne <Import()> 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 subOne.data + " " + subTwo.data End Function End Class <Export()> Public Class MySubOne Public data = "Sub One String!" End Class <Export()> Public Class MySubTwo Public data = "Sub Two String!" End Class
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.