CompositionContainer Klas

Definitie

Beheert de samenstelling van onderdelen.

public ref class CompositionContainer : System::ComponentModel::Composition::Hosting::ExportProvider, IDisposable, System::ComponentModel::Composition::ICompositionService
public class CompositionContainer : System.ComponentModel.Composition.Hosting.ExportProvider, IDisposable, System.ComponentModel.Composition.ICompositionService
type CompositionContainer = class
    inherit ExportProvider
    interface ICompositionService
    interface IDisposable
Public Class CompositionContainer
Inherits ExportProvider
Implements ICompositionService, IDisposable
Overname
CompositionContainer
Implementeringen

Voorbeelden

In het volgende voorbeeld wordt een CompositionContainer object geïnitialiseerd met een catalogus en gebruikt om de import van een onderdeel te vullen. In dit voorbeeld wordt het toegeschreven programmeermodel gebruikt.

[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();

        _container.Dispose();
    }
}
<Export()>
Public Class MyAddin
    Public ReadOnly Property theData As String
        Get
            Return "The Data!"
        End Get
    End Property
End Class

Public Class MyProgam
    Private _MyAddin As MyAddin

    <Import()>
    Public Property MyAddinProperty As MyAddin
        Get
            Return _MyAddin
        End Get
        Set(ByVal value As MyAddin)
            _MyAddin = value
        End Set
    End Property

End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyAddin).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim theProgam As MyProgam = New MyProgam()
    container.SatisfyImportsOnce(theProgam)
    Console.WriteLine(theProgam.MyAddinProperty.theData)
    Console.ReadLine()

    container.Dispose()

End Sub

Opmerkingen

Een CompositionContainer object dient twee belangrijke doeleinden in een toepassing. Eerst wordt bijgehouden welke onderdelen beschikbaar zijn voor compositie en wat hun afhankelijkheden zijn, en wordt de samenstelling uitgevoerd wanneer de set beschikbare onderdelen verandert. Ten tweede biedt het de methoden waarmee de toepassing exemplaren van samengestelde onderdelen ophaalt of de afhankelijkheden van een samenstelbaar onderdeel vult.

Belangrijk

Met dit type wordt de IDisposable interface geïmplementeerd. Wanneer u klaar bent met het gebruik van het type, moet u het direct of indirect verwijderen. Als u het type rechtstreeks wilt verwijderen, roept u de Dispose methode aan in een try/catch blok. Als u deze indirect wilt verwijderen, gebruikt u een taalconstructie zoals using (in C#) of Using (in Visual Basic). Zie de sectie 'Using an Object that Implements IDisposable' (Een object gebruiken dat IDisposable implementeert) in het IDisposable interfaceonderwerp voor meer informatie.

Onderdelen kunnen rechtstreeks of via de eigenschap beschikbaar worden gesteld aan de Catalog container. Alle onderdelen die in deze ComposablePartCatalog container kunnen worden gedetecteerd, zijn beschikbaar voor de container om te voldoen aan de importbewerkingen, samen met alle onderdelen die rechtstreeks worden toegevoegd.

Met de Compose methode kunnen geïnstantieerde onderdelen worden toegevoegd aan een bestaande container. Ervan uitgaande dat de samenstelling is geslaagd, hebben deze onderdelen hun invoer gevuld met onderdelen die uit de container zijn opgehaald en zijn hun export beschikbaar voor andere onderdelen. Importen die zijn gemarkeerd als hercomposeerbaar, worden geregistreerd voor hercompositie.

Met de SatisfyImportsOnce methode kan een deel de importbewerkingen laten vullen zonder dat deze aan de container worden toegevoegd. Als de samenstelling is geslaagd, wordt de invoer van het deel gevuld, maar is de uitvoer van het onderdeel niet beschikbaar voor andere onderdelen en worden er geen invoer geregistreerd voor hercompositie.

CompositionContainer objecten moeten altijd worden verwijderd. Wanneer de Dispose methode wordt aangeroepen, verwijdert het CompositionContainer object ook alle onderdelen die het heeft gemaakt.

Een CompositionContainer object dat toegankelijk is vanuit meerdere threads, moet worden samengesteld met de isThreadSafe parameter die is ingesteld trueop, met behulp van de CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) constructor. De prestaties zijn iets trager als isThreadSafe dat het geval is true, dus we raden u aan deze parameter false in te stellen in scenario's met één thread. De standaardwaarde is false.

Warning

Een CompositionContainer mag zichzelf nooit importeren of een onderdeel dat ernaar verwijst. Een dergelijke verwijzing kan een niet-vertrouwd onderdeel toegang geven tot alle onderdelen in de container.

Constructors

Name Description
CompositionContainer()

Initialiseert een nieuw exemplaar van de CompositionContainer klasse.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Initialiseert een nieuw exemplaar van de CompositionContainer klasse met de opgegeven catalogus, thread-veilige modus en exportproviders.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Initialiseert een nieuw exemplaar van de CompositionContainer klasse met de opgegeven catalogus, opties en exportproviders.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Initialiseert een nieuw exemplaar van de CompositionContainer klasse met de opgegeven catalogus- en exportproviders.

CompositionContainer(CompositionOptions, ExportProvider[])

Initialiseert een nieuw exemplaar van de CompositionContainer klasse met de opgegeven exportproviders en opties.

CompositionContainer(ExportProvider[])

Initialiseert een nieuw exemplaar van de CompositionContainer klasse met de opgegeven exportproviders.

Eigenschappen

Name Description
Catalog

Hiermee haalt u de ComposablePartCatalog containertoegang tot Export objecten op.

Providers

Hiermee haalt u de exportproviders op die de container toegang bieden tot aanvullende ComposablePartCatalog objecten.

Methoden

Name Description
Compose(CompositionBatch)

Voegt de onderdelen in de opgegeven CompositionBatch container toe of verwijdert deze en voert samenstelling uit.

Dispose()

Alle resources die door het huidige exemplaar van de CompositionContainer klasse worden gebruikt, worden vrijgegeven.

Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de CompositionContainer beheerde resources en brengt eventueel de beheerde resources vrij.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetExport<T,TMetadataView>()

Retourneert de export met de contractnaam die is afgeleid van de opgegeven typeparameter. Als er niet precies één overeenkomende export is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExport<T,TMetadataView>(String)

Retourneert de export met de opgegeven contractnaam. Als er niet precies één overeenkomende export is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExport<T>()

Retourneert de export met de contractnaam die is afgeleid van de opgegeven typeparameter. Als er niet precies één overeenkomende export is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExport<T>(String)

Retourneert de export met de opgegeven contractnaam. Als er niet precies één overeenkomende export is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExportedValue<T>()

Retourneert het geëxporteerde object met de contractnaam die is afgeleid van de opgegeven typeparameter. Als er niet precies één overeenkomend geëxporteerd object is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExportedValue<T>(String)

Retourneert het geëxporteerde object met de opgegeven contractnaam. Als er niet precies één overeenkomend geëxporteerd object is, wordt er een uitzondering gegenereerd.

(Overgenomen van ExportProvider)
GetExportedValueOrDefault<T>()

Hiermee haalt u het geëxporteerde object op met de contractnaam die is afgeleid van de opgegeven typeparameter of de standaardwaarde voor het opgegeven type, of genereert u een uitzondering als er meer dan één overeenkomend geëxporteerd object is.

(Overgenomen van ExportProvider)
GetExportedValueOrDefault<T>(String)

Hiermee haalt u het geëxporteerde object op met de opgegeven contractnaam of de standaardwaarde voor het opgegeven type, of genereert u een uitzondering als er meer dan één overeenkomend geëxporteerd object is.

(Overgenomen van ExportProvider)
GetExportedValues<T>()

Hiermee haalt u alle geëxporteerde objecten op met de contractnaam die is afgeleid van de opgegeven typeparameter.

(Overgenomen van ExportProvider)
GetExportedValues<T>(String)

Hiermee haalt u alle geëxporteerde objecten op met de opgegeven contractnaam.

(Overgenomen van ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Hiermee haalt u alle exports op die overeenkomen met de voorwaarden van de opgegeven importdefinitie en -samenstelling.

(Overgenomen van ExportProvider)
GetExports(ImportDefinition)

Hiermee haalt u alle exports op die overeenkomen met de voorwaarden van de opgegeven importdefinitie.

(Overgenomen van ExportProvider)
GetExports(Type, Type, String)

Hiermee haalt u alle exports op met de opgegeven contractnaam.

(Overgenomen van ExportProvider)
GetExports<T,TMetadataView>()

Hiermee haalt u alle exports op met de contractnaam die is afgeleid van de opgegeven typeparameter.

(Overgenomen van ExportProvider)
GetExports<T,TMetadataView>(String)

Hiermee haalt u alle exports op met de opgegeven contractnaam.

(Overgenomen van ExportProvider)
GetExports<T>()

Hiermee haalt u alle exports op met de contractnaam die is afgeleid van de opgegeven typeparameter.

(Overgenomen van ExportProvider)
GetExports<T>(String)

Hiermee haalt u alle exports op met de opgegeven contractnaam.

(Overgenomen van ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Retourneert een verzameling van alle exports die overeenkomen met de voorwaarden in het opgegeven ImportDefinition object.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnExportsChanged(ExportsChangeEventArgs)

Hiermee wordt de ExportsChanged gebeurtenis gegenereerd.

(Overgenomen van ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Hiermee wordt de ExportsChanging gebeurtenis gegenereerd.

(Overgenomen van ExportProvider)
ReleaseExport(Export)

Hiermee wordt het opgegeven Export object uit de CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Hiermee verwijdert u de opgegeven export uit de samenstelling en brengt u indien mogelijk de bijbehorende resources vrij.

ReleaseExports(IEnumerable<Export>)

Hiermee wordt een set Export objecten van de CompositionContainer.

ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>)

Hiermee verwijdert u een verzameling exports uit samenstelling en publiceert u indien mogelijk hun resources.

ReleaseExports<T>(IEnumerable<Lazy<T>>)

Hiermee verwijdert u een verzameling exports uit samenstelling en publiceert u indien mogelijk hun resources.

SatisfyImportsOnce(ComposablePart)

Voldoet aan de invoer van het opgegeven ComposablePart object zonder het te registreren voor hercompositie.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Hiermee haalt u alle exports op die overeenkomen met de voorwaarden van de opgegeven import.

(Overgenomen van ExportProvider)

gebeurtenis

Name Description
ExportsChanged

Vindt plaats wanneer de exports in de ExportProvider wijziging worden uitgevoerd.

(Overgenomen van ExportProvider)
ExportsChanging

Treedt op wanneer de opgegeven exports worden gewijzigd.

(Overgenomen van ExportProvider)

Extensiemethoden

Name Description
ComposeExportedValue<T>(CompositionContainer, String, T)

Hiermee maakt u een onderdeel van het opgegeven object onder de naam van het opgegeven contract en stelt u dit samen in de opgegeven samenstellingscontainer.

ComposeExportedValue<T>(CompositionContainer, T)

Hiermee maakt u een onderdeel op basis van de opgegeven waarde en stelt u dit samen in de opgegeven samenstellingscontainer.

ComposeParts(CompositionContainer, Object[])

Hiermee maakt u samenstelbare onderdelen van een matrix met toegeschreven objecten en stelt u deze samen in de opgegeven samenstellingscontainer.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Hiermee wordt het opgegeven onderdeel samengesteld met behulp van de opgegeven samenstellingsservice, waarbij de hercompositie is uitgeschakeld en de opgegeven context voor weerspiegeling wordt gebruikt.

SatisfyImportsOnce(ICompositionService, Object)

Hiermee wordt het opgegeven onderdeel samengesteld met behulp van de opgegeven samenstellingsservice, waarbij hercompositie is uitgeschakeld.

Van toepassing op

Zie ook