CompositionContainer Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- 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, oluşturma 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 değiştiğinde oluşturma işlemi gerçekleştirir. İkincisi, 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 IDisposable arabirimini uygular. Kullanımını bitirdiğinizde, doğrudan ya da dolaylı yoldan atmalısınız. Türü doğrudan atabilmek için, bir Disposetry/ bloğunda catch yöntemini çağırın. Bunu dolaylı olarak atmak için using (C#'de) veya Using (Visual Basic'te) gibi 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ı için Catalog kullanılabilir hale getirilebilir. Burada ComposablePartCatalog bulunabilen tüm parçalar, içeri aktarmaları ve doğrudan eklenen bölümleri yerine getirmek için kapsayıcı tarafından kullanılabilir.
yöntemi, Compose örnekleştirilmiş parçaların var olan bir kapsayıcıya eklenmesine olanak tanır. Oluşturmanın başarılı olduğu varsayıldığında, 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 ayrıştırılmak üzere 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, bölümü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 nesnesi, CompositionContainer oluşturduğu tüm bölümleri de atar.
CompositionContainer Birden çok iş parçacığından erişilebilen bir nesne, oluşturucu kullanılarak CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) parametresi olarak trueayarlanmış şekilde oluşturulmalıdırisThreadSafe. olduğunda isThreadSafetrueperformans biraz daha yavaş olacaktır, bu nedenle bu parametreyi false tek iş parçacıklı senaryolarda olarak 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 parçanın kapsayıcıdaki tüm parçalara erişmesine izin verebilir.
Oluşturucular
| Name | Description |
|---|---|
| CompositionContainer() |
CompositionContainer sınıfının yeni bir örneğini başlatır. |
| CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Sınıfın CompositionContainer yeni bir örneğini belirtilen katalog, iş parçacığı güvenli modu ve dışarı aktarma sağlayıcılarıyla 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
| Name | Description |
|---|---|
| Catalog |
Kapsayıcının ComposablePartCatalog nesnelere erişimini Export sağlayan öğesini alır. |
| Providers |
Kapsayıcının ek ComposablePartCatalog nesnelere erişimini sağlayan dışarı aktarma sağlayıcılarını alır. |
Yöntemler
| Name | Description |
|---|---|
| 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() |
Sınıfın geçerli örneği CompositionContainer tarafından kullanılan tüm kaynakları serbest bırakır. |
| Dispose(Boolean) |
tarafından CompositionContainer kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları 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ı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>() |
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ı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) |
| 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, AtomicComposition) |
Belirtilen içeri aktarma tanımı ve bileşiminin koşullarıyla eşleşen tüm dışarı aktarmaları 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(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ı aktarmalardan oluşan bir koleksiyon döndürür. |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit 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>) |
içindeki CompositionContainerbir nesne kümesini Export serbest bırakır. |
| ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Bir dışarı aktarma koleksiyonunu birleştirmeden kaldırır ve mümkünse kaynaklarını serbest bırakır. |
| ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Bir dışarı aktarma koleksiyonunu birleştirmeden 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 bir dize 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
| Name | Description |
|---|---|
| ExportsChanged |
Değişiklikte 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ı
| Name | Description |
|---|---|
| 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. |
| ComposeExportedValue<T>(CompositionContainer, T) |
Belirtilen değerden 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, 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. |
| SatisfyImportsOnce(ICompositionService, Object) |
Belirtilen bölümü, belirtilen oluşturma hizmetini kullanarak, yeniden ayrıştırma devre dışı bırakılarak oluşturur. |