Share via


CompositionContainer Sınıf

Tanım

Parçaların bileşimini yönetir.

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
Devralma
CompositionContainer
Uygulamalar

Örnekler

Aşağıdaki örnekte, bir CompositionContainer nesne bir katalogla başlatılır ve bir bölümün içeri aktarmalarını doldurmak için kullanılır. Bu örnekte Öznitelikli Programlama Modeli kullanılır.

[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

Açıklamalar

Bir CompositionContainer nesne, bir uygulamada iki önemli amaca hizmet eder. İlk olarak, birleştirme için hangi parçaların kullanılabilir olduğunu ve bağımlılıklarının ne olduğunu izler ve kullanılabilir parça kümesi her değiştiğinde birleştirme gerçekleştirir. İkinci olarak, uygulamanın oluşturulan parçaların örneklerini aldığı veya birleştirilebilir parçanın bağımlılıklarını doldurduğu yöntemleri sağlar.

Önemli

Bu tür arabirimini IDisposable uygular. Türünü kullanmayı bitirdiğinizde, doğrudan veya dolaylı olarak atmalısınız. Türü doğrudan atmak için yöntemini bir try/catch blok içinde çağırın.Dispose Bunu dolaylı olarak atmak için (C#'de) veya Using (Visual Basic'te) gibi using bir dil yapısı kullanın. Daha fazla bilgi için arabirim konusunun "IDisposable Uygulayan Bir Nesne Kullanma" bölümüne IDisposable bakın.

Parçalar doğrudan veya özelliği aracılığıyla kapsayıcıya Catalog kullanılabilir hale getirilebilir. Bunun ComposablePartCatalog içinde bulunabilen tüm parçalar, doğrudan eklenen tüm parçaların yanı sıra içeri aktarmaları gerçekleştirmek için kapsayıcı tarafından kullanılabilir.

yöntemi, Compose örneklenmiş parçaların var olan bir kapsayıcıya eklenmesini sağlar. Birleştirmenin başarılı olduğunu varsayarsak, bu parçaların içeri aktarmaları kapsayıcıdan alınan parçalarla doldurulur ve dışarı aktarmaları diğer parçalar için kullanılabilir. Yeniden derlenebilir olarak işaretlenen içeri aktarmalar yeniden konumlandırma için kaydedilir.

yöntemi, SatisfyImportsOnce bir bölümün kapsayıcıya eklenmeden içeri aktarmalarının doldurulmasını sağlar. Birleştirme başarılı olursa, parçanın içeri aktarmaları doldurulur, ancak bölümün dışarı aktarmaları diğer bölümler için kullanılamaz ve yeniden konumlandırma için hiçbir içeri aktarma kaydedilmez.

CompositionContainer nesneleri her zaman atılmalıdır. Dispose yöntemi çağrıldığında nesnesiCompositionContainer, oluşturduğu tüm parçaları da atar.

CompositionContainer Birden çok iş parçacığından erişilebilen bir nesne, oluşturucu kullanılarak CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) parametresi olarak ayarlanmış trueşekilde oluşturulmalıdırisThreadSafe. olduğunda isThreadSafetrueperformans biraz daha yavaş olacaktır, bu nedenle bu parametreyi tek iş parçacıklı senaryolarda olarak false ayarlamanızı öneririz. Varsayılan değer: false.

Uyarı

A CompositionContainer hiçbir zaman kendisini veya buna başvurusu olan bir bölümü içeri aktarmamalıdır. Böyle bir başvuru, güvenilmeyen bir bölümün kapsayıcıdaki tüm bölümlere erişmesine izin verebilir.

Oluşturucular

CompositionContainer()

CompositionContainer sınıfının yeni bir örneğini başlatır.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Belirtilen katalog, iş parçacığı güvenli modu ve dışarı aktarma sağlayıcıları ile sınıfının yeni bir örneğini CompositionContainer başlatır.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Belirtilen katalog, seçenekler ve dışarı aktarma sağlayıcılarıyla sınıfının yeni bir örneğini CompositionContainer başlatır.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Belirtilen katalog ve dışarı aktarma sağlayıcılarıyla sınıfının yeni bir örneğini CompositionContainer başlatır.

CompositionContainer(CompositionOptions, ExportProvider[])

Belirtilen dışarı aktarma sağlayıcıları ve seçenekleriyle sınıfının yeni bir örneğini CompositionContainer başlatır.

CompositionContainer(ExportProvider[])

Belirtilen dışarı aktarma sağlayıcılarıyla sınıfının yeni bir örneğini CompositionContainer başlatır.

Özellikler

Catalog

Nesnelere ComposablePartCatalog kapsayıcı erişimi sağlayan öğesini Export alır.

Providers

Ek ComposablePartCatalog nesnelere kapsayıcı erişimi sağlayan dışarı aktarma sağlayıcılarını alır.

Yöntemler

Compose(CompositionBatch)

Belirtilen CompositionBatch içindeki bölümleri kapsayıcıdan ekler veya kaldırır ve oluşturma işlemini yürütür.

Dispose()

CompositionContainer sınıfının geçerli örneği tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

CompositionContainer tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetExport<T,TMetadataView>()

Belirtilen tür parametresinden türetilen sözleşme adıyla dışarı aktarmayı döndürür. Tam olarak eşleşen bir dışarı aktarma yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExport<T,TMetadataView>(String)

Belirtilen sözleşme adına sahip dışarı aktarmayı döndürür. Tam olarak eşleşen bir dışarı aktarma yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExport<T>()

Belirtilen tür parametresinden türetilen sözleşme adıyla dışarı aktarmayı döndürür. Tam olarak eşleşen bir dışarı aktarma yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExport<T>(String)

Belirtilen sözleşme adına sahip dışarı aktarmayı döndürür. Tam olarak eşleşen bir dışarı aktarma yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExportedValue<T>()

Belirtilen tür parametresinden türetilen sözleşme adıyla dışarı aktarılan nesneyi döndürür. Tam olarak eşleşen bir dışarı aktarılan nesne yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExportedValue<T>(String)

Belirtilen sözleşme adına sahip dışarı aktarılan nesneyi döndürür. Tam olarak eşleşen bir dışarı aktarılan nesne yoksa, bir özel durum oluşturulur.

(Devralındığı yer: ExportProvider)
GetExportedValueOrDefault<T>()

Belirtilen tür parametresinden veya belirtilen tür için varsayılan değerden türetilen sözleşme adıyla dışarı aktarılan nesneyi alır veya birden fazla eşleşen dışarı aktarılan nesne varsa bir özel durum oluşturur.

(Devralındığı yer: ExportProvider)
GetExportedValueOrDefault<T>(String)

Belirtilen sözleşme adına veya belirtilen tür için varsayılan değere sahip dışarı aktarılan nesneyi alır veya birden fazla eşleşen dışarı aktarılan nesne varsa bir özel durum oluşturur.

(Devralındığı yer: ExportProvider)
GetExportedValues<T>()

Belirtilen tür parametresinden türetilen sözleşme adıyla dışarı aktarılan tüm nesneleri alır.

(Devralındığı yer: ExportProvider)
GetExportedValues<T>(String)

Belirtilen sözleşme adına sahip dışarı aktarılan tüm nesneleri alır.

(Devralındığı yer: ExportProvider)
GetExports(ImportDefinition)

Belirtilen içeri aktarma tanımının koşullarıyla eşleşen tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Belirtilen içeri aktarma tanımının ve bileşiminin koşullarıyla eşleşen tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports(Type, Type, String)

Belirtilen sözleşme adına sahip tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports<T,TMetadataView>()

Belirtilen tür parametresinden türetilen sözleşme adıyla tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports<T,TMetadataView>(String)

Belirtilen sözleşme adına sahip tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports<T>()

Belirtilen tür parametresinden türetilen sözleşme adıyla tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExports<T>(String)

Belirtilen sözleşme adına sahip tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Belirtilen ImportDefinition nesnedeki koşullarla eşleşen tüm dışarı aktarmaların koleksiyonunu döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnExportsChanged(ExportsChangeEventArgs)

Olayı tetikler ExportsChanged .

(Devralındığı yer: ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Olayı tetikler ExportsChanging .

(Devralındığı yer: ExportProvider)
ReleaseExport(Export)

Belirtilen Export nesneyi öğesinden CompositionContainerserbest bırakır.

ReleaseExport<T>(Lazy<T>)

Belirtilen dışarı aktarmayı oluşturmadan kaldırır ve mümkünse kaynaklarını serbest bırakır.

ReleaseExports(IEnumerable<Export>)

uygulamasından ExportCompositionContainerbir nesne kümesi serbest bırakır.

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

Birleştirmeden bir dışarı aktarma koleksiyonunu kaldırır ve mümkünse kaynaklarını serbest bırakır.

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

Birleştirmeden bir dışarı aktarma koleksiyonunu kaldırır ve mümkünse kaynaklarını serbest bırakır.

SatisfyImportsOnce(ComposablePart)

Yeniden konumlandırma için kaydetmeden belirtilen ComposablePart nesnenin içeri aktarmalarını karşılar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Belirtilen içeri aktarmanın koşullarıyla eşleşen tüm dışarı aktarmaları alır.

(Devralındığı yer: ExportProvider)

Ekinlikler

ExportsChanged

Değişiklikteki dışarı aktarma işlemi gerçekleştiğinde ExportProvider gerçekleşir.

(Devralındığı yer: ExportProvider)
ExportsChanging

Sağlanan dışarı aktarmalar değiştiğinde gerçekleşir.

(Devralındığı yer: ExportProvider)

Uzantı Metotları

ComposeExportedValue<T>(CompositionContainer, T)

Belirtilen değerden bir parça oluşturur ve bunu belirtilen oluşturma kapsayıcısında oluşturur.

ComposeExportedValue<T>(CompositionContainer, String, T)

Belirtilen nesneden belirtilen sözleşme adı altında bir parça oluşturur ve bunu belirtilen oluşturma kapsayıcısında oluşturur.

ComposeParts(CompositionContainer, Object[])

Öznitelikli nesneler dizisinden birleştirilebilir parçalar oluşturur ve bunları belirtilen oluşturma kapsayıcısında oluşturur.

SatisfyImportsOnce(ICompositionService, Object)

Belirtilen bölümü, belirtilen oluşturma hizmetini kullanarak, yeniden konumlandırma devre dışı bırakılarak oluşturur.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Belirtilen bölümü, belirtilen oluşturma hizmetini kullanarak, yeniden konumlandırma devre dışı bırakılarak ve belirtilen yansıma bağlamını kullanarak oluşturur.

Şunlara uygulanır

Ayrıca bkz.