CompositionContainer Třída

Definice

Spravuje složení částí.

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
Dědičnost
CompositionContainer
Implementuje

Příklady

V následujícím příkladu CompositionContainer je objekt inicializován katalogem a slouží k vyplnění importů části. V tomto příkladu se používá programovací model s atributy.

[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

Poznámky

Objekt CompositionContainer slouží v aplikaci ke dvěma hlavním účelům. Za prvé sleduje, které části jsou k dispozici pro složení a jaké jsou jejich závislosti, a provádí složení vždy, když se sada dostupných částí změní. Za druhé poskytuje metody, kterými aplikace získá instance složených částí nebo vyplní závislosti kompozibilní části.

Důležité

Tento typ implementuje IDisposable rozhraní . Až s použitím typu skončíte, měli byste ho odstranit přímo nebo nepřímo. Chcete-li odstranit typ přímo, zavolejte jeho Dispose metodu try/catch v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, jako using je (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.

Části mohou být kontejneru zpřístupněny buď přímo, nebo prostřednictvím Catalog vlastnosti . Všechny součásti zjistitelné v tomto ComposablePartCatalog souboru jsou k dispozici kontejneru pro splnění importu, spolu s přímo přidanými součástmi.

Metoda Compose umožňuje přidání částí instance do existujícího kontejneru. Za předpokladu, že složení je úspěšné, tyto části budou mít své importy naplněné částmi načtenými z kontejneru a jejich exporty budou k dispozici pro ostatní části. Importy označené jako rekomposable budou registrovány pro překompisování.

Metoda SatisfyImportsOnce umožňuje, aby se importy části vyplnily, aniž by se přidaly do kontejneru. Pokud je složení úspěšné, importy části budou vyplněny, ale exporty části nebudou k dispozici pro jiné části a žádné importy nebudou registrovány pro rekomppozici.

CompositionContainer objekty by měly být vždy odstraněny. Při zavolání DisposeCompositionContainer metody objekt také odstraní všechny části, které vytvořil.

Objekt CompositionContainer , ke kterému lze přistupovat z více vláken, musí být vytvořen pomocí parametru nastaveného isThreadSafe na truehodnotu pomocí konstruktoru CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) . Výkon bude o něco pomalejší, pokud isThreadSafe je true, proto doporučujeme nastavit tento parametr na hodnotu false ve scénářích s jedním vláknem. Výchozí formát je false.

Upozornění

A CompositionContainer by nikdy neměl importovat sám sebe nebo část, která na něj odkazuje. Takový odkaz by mohl umožnit nedůvěryhodné části získat přístup ke všem částem v kontejneru.

Konstruktory

CompositionContainer()

Inicializuje novou instanci CompositionContainer třídy .

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem, režimem bezpečným pro přístup z více vláken a zprostředkovateli exportu.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem, možnostmi a zprostředkovateli exportu.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Inicializuje novou instanci CompositionContainer třídy se zadaným katalogem a zprostředkovateli exportu.

CompositionContainer(CompositionOptions, ExportProvider[])

Inicializuje novou instanci CompositionContainer třídy se zadanými zprostředkovateli a možnostmi exportu.

CompositionContainer(ExportProvider[])

Inicializuje novou instanci CompositionContainer třídy se zadanými zprostředkovateli exportu.

Vlastnosti

Catalog

Získá , ComposablePartCatalog který poskytuje kontejner přístup k Export objektům.

Providers

Získá zprostředkovatele exportu, kteří poskytují kontejner přístup k dalším ComposablePartCatalog objektům.

Metody

Compose(CompositionBatch)

Přidá nebo odebere části v zadaném CompositionBatch kontejneru a provede sestavení.

Dispose()

Uvolní všechny prostředky používané aktuální instancí CompositionContainer třídy .

Dispose(Boolean)

Uvolní nespravované prostředky používané nástrojem CompositionContainer a volitelně uvolní spravované prostředky.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetExport<T,TMetadataView>()

Vrátí export s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExport<T,TMetadataView>(String)

Vrátí export se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExport<T>()

Vrátí export s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExport<T>(String)

Vrátí export se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající export, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExportedValue<T>()

Vrátí exportovaný objekt s názvem kontraktu odvozeným ze zadaného parametru typu. Pokud neexistuje přesně jeden odpovídající exportovaný objekt, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExportedValue<T>(String)

Vrátí exportovaný objekt se zadaným názvem kontraktu. Pokud neexistuje přesně jeden odpovídající exportovaný objekt, vyvolá se výjimka.

(Zděděno od ExportProvider)
GetExportedValueOrDefault<T>()

Získá exportovaný objekt s názvem kontraktu odvozeným od zadaného parametru typu nebo výchozí hodnotou pro zadaný typ nebo vyvolá výjimku, pokud existuje více než jeden odpovídající exportovaný objekt.

(Zděděno od ExportProvider)
GetExportedValueOrDefault<T>(String)

Získá exportovaný objekt se zadaným názvem kontraktu nebo výchozí hodnotou pro zadaný typ nebo vyvolá výjimku, pokud existuje více než jeden odpovídající exportovaný objekt.

(Zděděno od ExportProvider)
GetExportedValues<T>()

Získá všechny exportované objekty s názvem kontraktu odvozeným od zadaného parametru typu.

(Zděděno od ExportProvider)
GetExportedValues<T>(String)

Získá všechny exportované objekty se zadaným názvem smlouvy.

(Zděděno od ExportProvider)
GetExports(ImportDefinition)

Získá všechny exporty, které splňují podmínky zadané definice importu.

(Zděděno od ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Získá všechny exporty, které splňují podmínky zadané definice importu a složení.

(Zděděno od ExportProvider)
GetExports(Type, Type, String)

Získá všechny exporty se zadaným názvem kontraktu.

(Zděděno od ExportProvider)
GetExports<T,TMetadataView>()

Získá všechny exporty s názvem kontraktu odvozeným od zadaného parametru typu.

(Zděděno od ExportProvider)
GetExports<T,TMetadataView>(String)

Získá všechny exporty se zadaným názvem kontraktu.

(Zděděno od ExportProvider)
GetExports<T>()

Získá všechny exporty s názvem kontraktu odvozeným od zadaného parametru typu.

(Zděděno od ExportProvider)
GetExports<T>(String)

Získá všechny exporty se zadaným názvem kontraktu.

(Zděděno od ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Vrátí kolekci všech exportů, které splňují podmínky v zadaném ImportDefinition objektu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnExportsChanged(ExportsChangeEventArgs)

ExportsChanged Vyvolá událost.

(Zděděno od ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

ExportsChanging Vyvolá událost.

(Zděděno od ExportProvider)
ReleaseExport(Export)

Uvolní zadaný Export objekt z objektu CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Odebere zadaný export ze složení a uvolní jeho prostředky, pokud je to možné.

ReleaseExports(IEnumerable<Export>)

Uvolní sadu Export objektů z objektu CompositionContainer.

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

Odebere kolekci exportů ze složení a uvolní její prostředky, pokud je to možné.

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

Odebere kolekci exportů ze složení a uvolní její prostředky, pokud je to možné.

SatisfyImportsOnce(ComposablePart)

Splňuje importy zadaného ComposablePart objektu bez registrace pro rekomppozici.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Získá všechny exporty, které splňují podmínky zadaného importu.

(Zděděno od ExportProvider)

Událost

ExportsChanged

Vyvolá se při exportu ve ExportProvider změně.

(Zděděno od ExportProvider)
ExportsChanging

Vyvolá se při změně zadaných exportů.

(Zděděno od ExportProvider)

Metody rozšíření

ComposeExportedValue<T>(CompositionContainer, T)

Vytvoří část ze zadané hodnoty a sestaví ji v zadaném kontejneru složení.

ComposeExportedValue<T>(CompositionContainer, String, T)

Vytvoří část ze zadaného objektu pod zadaným názvem kontraktu a vytvoří ji v zadaném kontejneru složení.

ComposeParts(CompositionContainer, Object[])

Vytvoří složené části z pole objektů s atributy a vytvoří je v zadaném kontejneru složení.

SatisfyImportsOnce(ICompositionService, Object)

Sesloží zadanou část pomocí zadané služby složení se zakázaným překompisováním.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Sesloží zadanou část pomocí zadané služby složení, se zakázaným rekompozicí a použitím zadaného kontextu reflexe.

Platí pro

Viz také