CompositionContainer Osztály

Definíció

Kezeli az alkatrészek összetételét.

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
Öröklődés
CompositionContainer
Megvalósítás

Példák

Az alábbi példában egy CompositionContainer objektum inicializálva van egy katalógussal, és egy rész importálásának kitöltésére szolgál. Ez a példa az attribútumos programozási modellt használja.

[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

Megjegyzések

Egy CompositionContainer objektum két fő célt szolgál egy alkalmazásban. Először nyomon követi, hogy mely részek érhetők el az összeállításhoz és mik a függőségeik, és a rendelkezésre álló részek minden változásakor elvégzi a kompozíciót. Másodszor, megadja azokat a módszereket, amelyekkel az alkalmazás lekéri az összeállított részek példányait, vagy kitölti egy összeállítható rész függőségeit.

Important

Ez a típus implementálja a IDisposable felületet. Ha befejezte a típus használatát, közvetlenül vagy közvetve kell megsemmisítenie. A típus közvetlen ártalmatlanításához hívja meg a Dispose metódust egy try/catch blokkban. Ha közvetve szeretné megsemmisíteni, használjon olyan nyelvi szerkezetet, mint a using (C#-ban) vagy Using (a Visual Basicben). További információ: "Az IDisposable-t megvalósító objektum használata" című szakasz a IDisposable felület témakörében.

Az alkatrészek közvetlenül vagy a tulajdonságon keresztül is elérhetővé tehetők a tároló számára Catalog . Az ebben ComposablePartCatalog felfedezhető összes alkatrész elérhető a tároló számára az import teljesítéséhez, valamint a közvetlenül hozzáadott alkatrészekhez.

A Compose metódus lehetővé teszi a példányosított alkatrészek hozzáadását egy meglévő tárolóhoz. Feltételezve, hogy az összetétel sikeres, ezek az alkatrészek a tárolóból lekért alkatrészekkel lesznek kitöltve, és az exportjuk más alkatrészek számára is elérhető lesz. Az újrakomponzálásként megjelölt importálások regisztrálva lesznek az újrabontáshoz.

A SatisfyImportsOnce módszer lehetővé teszi egy rész számára, hogy a behozatala a tárolóhoz való hozzáadás nélkül megteljen. Ha az összetétel sikeres, a rész behozatala meg lesz töltve, de a rész exportálása nem lesz elérhető más részek számára, és nem lesznek regisztrálva újrabontásra.

CompositionContainer objektumokat mindig el kell helyezni. A metódus meghívásakor Dispose az CompositionContainer objektum az összes létrehozott részt is megsemmisíti.

A CompositionContainer több szálból is elérhető objektumot a isThreadSafe konstruktort használó true paraméterrel CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])kell létrehozni. A teljesítmény kissé lassabb lesz, ha isThreadSafe van true, ezért javasoljuk, hogy ezt a paramétert false egyszálas forgatókönyvekben állítsa be. Az alapértelmezett érték a false.

Warning

A CompositionContainer soha nem importálhatja magát, vagy olyan részt, amely hivatkozik rá. Egy ilyen hivatkozás lehetővé teheti, hogy egy nem megbízható rész hozzáférjen a tároló összes részéhez.

Konstruktorok

Name Description
CompositionContainer()

Inicializálja a CompositionContainer osztály új példányát.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Inicializálja az CompositionContainer osztály új példányát a megadott katalógussal, szálbiztos móddal és exportálási szolgáltatókkal.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Inicializálja az CompositionContainer osztály új példányát a megadott katalógussal, beállításokkal és exportálási szolgáltatókkal.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Inicializálja az osztály új példányát a CompositionContainer megadott katalógussal és exportálási szolgáltatókkal.

CompositionContainer(CompositionOptions, ExportProvider[])

Inicializálja az CompositionContainer osztály új példányát a megadott exportálási szolgáltatókkal és beállításokkal.

CompositionContainer(ExportProvider[])

Inicializálja az osztály új példányát CompositionContainer a megadott exportálási szolgáltatókkal.

Tulajdonságok

Name Description
Catalog

Lekéri azt, ComposablePartCatalog amely hozzáférést biztosít a tároló számára az objektumokhoz Export .

Providers

Lekéri azokat az exportálási szolgáltatókat, amelyek további ComposablePartCatalog objektumokhoz biztosítják a tároló elérését.

Metódusok

Name Description
Compose(CompositionBatch)

Hozzáadja vagy eltávolítja a megadott CompositionBatch alkatrészeket a tárolóból, és végrehajtja az összeállítást.

Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja CompositionContainer .

Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által CompositionContainer használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetExport<T,TMetadataView>()

Az exportálást a megadott típusparaméterből származtatott szerződésnévvel adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez.

(Öröklődés forrása ExportProvider)
GetExport<T,TMetadataView>(String)

A megadott szerződésnévvel rendelkező exportálást adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez.

(Öröklődés forrása ExportProvider)
GetExport<T>()

Az exportálást a megadott típusparaméterből származtatott szerződésnévvel adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez.

(Öröklődés forrása ExportProvider)
GetExport<T>(String)

A megadott szerződésnévvel rendelkező exportálást adja vissza. Ha nincs pontosan egy megfelelő exportálás, a rendszer kivételt jelez.

(Öröklődés forrása ExportProvider)
GetExportedValue<T>()

A megadott típusparaméterből származtatott szerződésnévvel rendelkező exportált objektumot adja vissza. Ha nincs pontosan egy egyező exportált objektum, a rendszer kivételt vet ki.

(Öröklődés forrása ExportProvider)
GetExportedValue<T>(String)

A megadott szerződésnévvel rendelkező exportált objektumot adja vissza. Ha nincs pontosan egy egyező exportált objektum, a rendszer kivételt vet ki.

(Öröklődés forrása ExportProvider)
GetExportedValueOrDefault<T>()

Lekéri az exportált objektumot a megadott típusparaméterből vagy a megadott típus alapértelmezett értékéből származtatott szerződésnévvel, vagy kivételt jelez, ha egynél több egyező exportált objektum van.

(Öröklődés forrása ExportProvider)
GetExportedValueOrDefault<T>(String)

Lekéri az exportált objektumot a megadott szerződésnévvel vagy a megadott típus alapértelmezett értékével, vagy kivételt eredményez, ha egynél több egyező exportált objektum van.

(Öröklődés forrása ExportProvider)
GetExportedValues<T>()

Lekéri az összes exportált objektumot a megadott típusparaméterből származtatott szerződésnévvel.

(Öröklődés forrása ExportProvider)
GetExportedValues<T>(String)

Lekéri az összes exportált objektumot a megadott szerződésnévvel.

(Öröklődés forrása ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Lekéri az összes olyan exportálást, amely megfelel a megadott importdefiníció és -összetétel feltételeinek.

(Öröklődés forrása ExportProvider)
GetExports(ImportDefinition)

Lekéri az összes olyan exportálást, amely megfelel a megadott importálási definíció feltételeinek.

(Öröklődés forrása ExportProvider)
GetExports(Type, Type, String)

Lekéri a megadott szerződésnévvel rendelkező összes exportálást.

(Öröklődés forrása ExportProvider)
GetExports<T,TMetadataView>()

Lekéri a megadott típusparaméterből származtatott szerződésnévvel rendelkező összes exportálást.

(Öröklődés forrása ExportProvider)
GetExports<T,TMetadataView>(String)

Lekéri a megadott szerződésnévvel rendelkező összes exportálást.

(Öröklődés forrása ExportProvider)
GetExports<T>()

Lekéri a megadott típusparaméterből származtatott szerződésnévvel rendelkező összes exportálást.

(Öröklődés forrása ExportProvider)
GetExports<T>(String)

Lekéri a megadott szerződésnévvel rendelkező összes exportálást.

(Öröklődés forrása ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

A megadott ImportDefinition objektum feltételeinek megfelelő összes exportálás gyűjteményét adja vissza.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnExportsChanged(ExportsChangeEventArgs)

Az eseményt emeli ExportsChanged ki.

(Öröklődés forrása ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Az eseményt emeli ExportsChanging ki.

(Öröklődés forrása ExportProvider)
ReleaseExport(Export)

Felszabadítja a megadott Export objektumot a CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Eltávolítja a megadott exportálást az összetételből, és lehetőség szerint felszabadítja az erőforrásait.

ReleaseExports(IEnumerable<Export>)

Objektumkészletet Export ad ki a CompositionContainer.

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

Eltávolítja az exportálások gyűjteményét az összetételből, és lehetőség szerint felszabadítja az erőforrásaikat.

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

Eltávolítja az exportálások gyűjteményét az összetételből, és lehetőség szerint felszabadítja az erőforrásaikat.

SatisfyImportsOnce(ComposablePart)

Kielégíti a megadott ComposablePart objektum importálását anélkül, hogy regisztrálja azt újrabontásra.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Lekéri az összes olyan exportálást, amely megfelel a megadott importálás feltételeinek.

(Öröklődés forrása ExportProvider)

esemény

Name Description
ExportsChanged

Akkor fordul elő, ha az exportálás a ExportProvider változás során történik.

(Öröklődés forrása ExportProvider)
ExportsChanging

Akkor fordul elő, ha a megadott exportálások változnak.

(Öröklődés forrása ExportProvider)

Bővítő metódusok

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

Létrehoz egy részt a megadott objektumból a megadott szerződésnév alatt, és a megadott összeállítási tárolóban állítja össze.

ComposeExportedValue<T>(CompositionContainer, T)

Létrehoz egy részt a megadott értékből, és a megadott összeállítási tárolóban állítja össze.

ComposeParts(CompositionContainer, Object[])

Összeírható részeket hoz létre attribútumalapú objektumok tömbjeiből, és a megadott összeállítási tárolóban állítja össze őket.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

A megadott részt a megadott összeállítási szolgáltatás használatával, az újrabontás letiltásával és a megadott tükröződési környezet használatával írja össze.

SatisfyImportsOnce(ICompositionService, Object)

A megadott részt a megadott összeállítási szolgáltatással írja össze, és az újrabontás le van tiltva.

A következőre érvényes:

Lásd még