Share via


CompositionContainer Kelas

Definisi

Mengelola komposisi bagian.

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
Warisan
CompositionContainer
Penerapan

Contoh

Dalam contoh berikut, CompositionContainer objek diinisialisasi dengan katalog dan digunakan untuk mengisi impor bagian. Contoh ini menggunakan Model Pemrograman Atribut.

[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

Keterangan

Objek CompositionContainer melayani dua tujuan utama dalam aplikasi. Pertama, ia melacak bagian mana yang tersedia untuk komposisi dan apa dependensinya, dan melakukan komposisi setiap kali set bagian yang tersedia berubah. Kedua, ini menyediakan metode di mana aplikasi mendapatkan instans bagian yang disusun atau mengisi dependensi bagian yang dapat disusun.

Penting

Jenis ini mengimplementasikan IDisposable antarmuka. Ketika Anda telah selesai menggunakan jenis , Anda harus membuangnya baik secara langsung atau tidak langsung. Untuk membuang jenis secara langsung, panggil metodenya Dispose dalam try/catch blok. Untuk membuangnya secara tidak langsung, gunakan konstruksi bahasa seperti using (di C#) atau Using (di Visual Basic). Untuk informasi selengkapnya, lihat bagian "Menggunakan Objek yang Mengimplementasikan IDisposable" di IDisposable topik antarmuka.

Bagian dapat disediakan untuk kontainer baik secara langsung atau melalui Catalog properti . Semua bagian yang dapat ditemukan dalam hal ini ComposablePartCatalog tersedia untuk kontainer untuk memenuhi impor, bersama dengan bagian apa pun yang ditambahkan secara langsung.

Metode ini Compose memungkinkan bagian yang dibuat untuk ditambahkan ke kontainer yang ada. Dengan asumsi komposisi berhasil, bagian-bagian ini akan memiliki impor mereka yang diisi dengan bagian yang diambil dari kontainer, dan ekspornya akan tersedia untuk bagian lain. Impor yang ditandai sebagai dapat dikompresi ulang akan didaftarkan untuk komposisi ulang.

Metode ini SatisfyImportsOnce memungkinkan bagian untuk mengisi impornya tanpa ditambahkan ke kontainer. Jika komposisi berhasil, impor bagian akan diisi, tetapi ekspor bagian tidak akan tersedia untuk bagian lain dan tidak ada impor yang akan didaftarkan untuk rekomosisi.

CompositionContainer objek harus selalu dibuang. Ketika metode dipanggil Dispose , CompositionContainer objek juga membuang semua bagian yang telah dibuatnya.

Objek CompositionContainer yang dapat diakses dari beberapa utas harus dibangun dengan parameter yang isThreadSafe diatur ke true, menggunakan CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) konstruktor . Performa akan sedikit lebih lambat ketika isThreadSafe adalah true, jadi kami sarankan Anda mengatur parameter ini ke false dalam skenario utas tunggal. Default adalah false.

Peringatan

A CompositionContainer tidak boleh mengimpor dirinya sendiri, atau bagian yang memiliki referensi ke dalamnya. Referensi seperti itu dapat memungkinkan bagian yang tidak tepercaya untuk mendapatkan akses semua bagian dalam kontainer.

Konstruktor

CompositionContainer()

Menginisialisasi instans baru kelas CompositionContainer.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Menginisialisasi instans CompositionContainer baru kelas dengan katalog, mode aman utas, dan penyedia ekspor yang ditentukan.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Menginisialisasi instans CompositionContainer baru kelas dengan katalog, opsi, dan penyedia ekspor yang ditentukan.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Menginisialisasi instans CompositionContainer baru kelas dengan katalog dan penyedia ekspor yang ditentukan.

CompositionContainer(CompositionOptions, ExportProvider[])

Menginisialisasi instans CompositionContainer baru kelas dengan penyedia dan opsi ekspor yang ditentukan.

CompositionContainer(ExportProvider[])

Menginisialisasi instans CompositionContainer baru kelas dengan penyedia ekspor yang ditentukan.

Properti

Catalog

ComposablePartCatalog Mendapatkan yang menyediakan akses kontainer ke Export objek.

Providers

Mendapatkan penyedia ekspor yang menyediakan akses kontainer ke objek tambahan ComposablePartCatalog .

Metode

Compose(CompositionBatch)

Menambahkan atau menghapus bagian-bagian dalam yang ditentukan CompositionBatch dari kontainer dan menjalankan komposisi.

Dispose()

Merilis semua sumber daya yang digunakan oleh instans CompositionContainer kelas saat ini.

Dispose(Boolean)

Merilis sumber daya tidak terkelola yang digunakan oleh CompositionContainer dan secara opsional merilis sumber daya terkelola.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetExport<T,TMetadataView>()

Mengembalikan ekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan. Jika tidak ada persis satu ekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExport<T,TMetadataView>(String)

Mengembalikan ekspor dengan nama kontrak yang ditentukan. Jika tidak ada persis satu ekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExport<T>()

Mengembalikan ekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan. Jika tidak ada persis satu ekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExport<T>(String)

Mengembalikan ekspor dengan nama kontrak yang ditentukan. Jika tidak ada persis satu ekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExportedValue<T>()

Mengembalikan objek yang diekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan. Jika tidak ada persis satu objek yang diekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExportedValue<T>(String)

Mengembalikan objek yang diekspor dengan nama kontrak yang ditentukan. Jika tidak ada persis satu objek yang diekspor yang cocok, pengecualian akan dilemparkan.

(Diperoleh dari ExportProvider)
GetExportedValueOrDefault<T>()

Mendapatkan objek yang diekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan atau nilai default untuk jenis yang ditentukan, atau melemparkan pengecualian jika ada lebih dari satu objek yang diekspor yang cocok.

(Diperoleh dari ExportProvider)
GetExportedValueOrDefault<T>(String)

Mendapatkan objek yang diekspor dengan nama kontrak yang ditentukan atau nilai default untuk jenis yang ditentukan, atau melemparkan pengecualian jika ada lebih dari satu objek yang diekspor yang cocok.

(Diperoleh dari ExportProvider)
GetExportedValues<T>()

Mendapatkan semua objek yang diekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan.

(Diperoleh dari ExportProvider)
GetExportedValues<T>(String)

Mendapatkan semua objek yang diekspor dengan nama kontrak yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports(ImportDefinition)

Mendapatkan semua ekspor yang cocok dengan kondisi definisi impor yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Mendapatkan semua ekspor yang sesuai dengan kondisi definisi dan komposisi impor yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports(Type, Type, String)

Mendapatkan semua ekspor dengan nama kontrak yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports<T,TMetadataView>()

Mendapatkan semua ekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports<T,TMetadataView>(String)

Mendapatkan semua ekspor dengan nama kontrak yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports<T>()

Mendapatkan semua ekspor dengan nama kontrak yang berasal dari parameter jenis yang ditentukan.

(Diperoleh dari ExportProvider)
GetExports<T>(String)

Mendapatkan semua ekspor dengan nama kontrak yang ditentukan.

(Diperoleh dari ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Mengembalikan kumpulan semua ekspor yang cocok dengan kondisi dalam objek yang ditentukan ImportDefinition .

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnExportsChanged(ExportsChangeEventArgs)

Memunculkan kejadian ExportsChanged.

(Diperoleh dari ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Memunculkan kejadian ExportsChanging.

(Diperoleh dari ExportProvider)
ReleaseExport(Export)

Melepaskan objek yang ditentukan Export dari CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Menghapus ekspor yang ditentukan dari komposisi dan melepaskan sumber dayanya jika memungkinkan.

ReleaseExports(IEnumerable<Export>)

Merilis sekumpulan Export objek dari CompositionContainer.

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

Menghapus kumpulan ekspor dari komposisi dan melepaskan sumber dayanya jika memungkinkan.

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

Menghapus kumpulan ekspor dari komposisi dan melepaskan sumber dayanya jika memungkinkan.

SatisfyImportsOnce(ComposablePart)

Memenuhi impor objek yang ditentukan ComposablePart tanpa mendaftarkannya untuk komposisi ulang.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Mendapatkan semua ekspor yang sesuai dengan kondisi impor yang ditentukan.

(Diperoleh dari ExportProvider)

Acara

ExportsChanged

Terjadi ketika ekspor dalam ExportProvider perubahan.

(Diperoleh dari ExportProvider)
ExportsChanging

Terjadi ketika ekspor yang disediakan berubah.

(Diperoleh dari ExportProvider)

Metode Ekstensi

ComposeExportedValue<T>(CompositionContainer, T)

Membuat bagian dari nilai yang ditentukan dan menyusunnya dalam kontainer komposisi yang ditentukan.

ComposeExportedValue<T>(CompositionContainer, String, T)

Membuat bagian dari objek yang ditentukan di bawah nama kontrak yang ditentukan dan menyusunnya dalam kontainer komposisi yang ditentukan.

ComposeParts(CompositionContainer, Object[])

Membuat bagian yang dapat disusun dari array objek yang diatribusikan dan menyusunnya dalam kontainer komposisi yang ditentukan.

SatisfyImportsOnce(ICompositionService, Object)

Menyusun bagian yang ditentukan dengan menggunakan layanan komposisi yang ditentukan, dengan komposisi ulang dinonaktifkan.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Menyusun bagian yang ditentukan dengan menggunakan layanan komposisi yang ditentukan, dengan komposisi ulang dinonaktifkan dan menggunakan konteks pantulan yang ditentukan.

Berlaku untuk

Lihat juga