Aracılığıyla paylaş


Düzenleyicide Yönetilen Genişletilebilirlik Çerçevesi

Düzenleyici, Yönetilen Genişletilebilirlik Çerçevesi (MEF) bileşenleri kullanılarak oluşturulur. Düzenleyiciyi genişletmek için kendi MEF bileşenlerinizi oluşturabilirsiniz ve kodunuz da düzenleyici bileşenlerini kullanabilir.

MEF, MEF programlama modelini izleyen bir uygulamanın veya bileşenin özelliklerini eklemenize ve değiştirmenize olanak tanıyan bir .NET kitaplığıdır. Visual Studio düzenleyicisi MEF bileşen parçalarını hem sağlayabilir hem de kullanabilir.

MEF, .NET Framework sürüm 4 System.ComponentModel.Composition.dll derlemesinde bulunur.

MEF hakkında daha fazla bilgi için bkz . Yönetilen Genişletilebilirlik Çerçevesi (MEF).

Bileşen parçaları ve bileşim kapsayıcıları

Bileşen bölümü, aşağıdakilerden birini (veya her ikisini) yapabilen bir sınıf veya sınıfın üyesidir:

  • Başka bir bileşen kullanma

  • Başka bir bileşen tarafından tüketilmelidir

    Örneğin, ambar envanter bileşeni tarafından sağlanan ürün kullanılabilirliği verilerine bağlı olarak sipariş giriş bileşenine sahip bir alışveriş uygulamasını düşünün. MEF terimlerinde stok bölümü ürün kullanılabilirlik verilerini dışarı aktarabilir ve sipariş girişi bölümü verileri içeri aktarabilir. Sipariş girişi bölümü ve stok bölümü birbirini bilmek zorunda değildir; oluşturma kapsayıcısı (konak uygulaması tarafından sağlanan), dışarı aktarma kümesini korumak ve dışarı aktarmaları ve içeri aktarmaları çözmekle sorumludur.

    oluşturma kapsayıcısı, CompositionContainergenellikle konağa aittir. Oluşturma kapsayıcısı, dışarı aktarılan bileşen parçalarının bir kataloğunu tutar.

Bileşen parçalarını dışarı ve içeri aktarma

Bir genel sınıf veya bir sınıfın ortak üyesi (özellik veya yöntem) olarak uygulandığı sürece herhangi bir işlevi dışarı aktarabilirsiniz. Bileşen bölümünüzü 'den ComposableParttüretmek zorunda değildir. Bunun yerine, dışarı aktarmak istediğiniz sınıfa veya sınıf üyesine bir ExportAttribute öznitelik eklemeniz gerekir. Bu öznitelik, başka bir bileşen bölümünün işlevinizi içeri aktarabileceği sözleşmeyi belirtir.

Dışarı aktarma sözleşmesi

, ExportAttribute dışarı aktarılmakta olan varlığı (sınıf, arabirim veya yapı) tanımlar. Genellikle, dışarı aktarma özniteliği dışarı aktarma türünü belirten bir parametre alır.

[Export(typeof(ContentTypeDefinition))]
class TestContentTypeDefinition : ContentTypeDefinition {   }

Varsayılan olarak, ExportAttribute özniteliği dışarı aktarma sınıfının türü olan bir sözleşme tanımlar.

[Export]
[Name("Structure")]
[Order(After = "Selection", Before = "Text")]
class TestAdornmentLayerDefinition : AdornmentLayerDefinition {   }

Örnekte, varsayılan [Export] öznitelik ile [Export(typeof(TestAdornmentLayerDefinition))]eşdeğerdir.

Aşağıdaki örnekte gösterildiği gibi bir özelliği veya yöntemi de dışarı aktarabilirsiniz.

[Export]
[Name("Scarlet")]
[Order(After = "Selection", Before = "Text")]
public AdornmentLayerDefinition scarletLayerDefinition;

MEF Dışarı Aktarmayı İçeri Aktarma

MEF dışarı aktarmayı kullanmak istediğinizde, dışarı aktarıldığı sözleşmeyi (genellikle türü) bilmeniz ve bu değere sahip bir ImportAttribute öznitelik eklemeniz gerekir. Varsayılan olarak, import özniteliği değiştirdiği sınıfın türü olan bir parametre alır. Aşağıdaki kod satırları türü içeri IClassificationTypeRegistryService aktarır.

[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;

İçeri/Dışarı Aktarma Sorunlarını Giderme: MEF Oluşturma Hata Günlüğüne Erişme

Geçerli VS yüklemesinde mevcut olmayan bir şeyi içeri aktarmaya çalışırsanız veya içeri veya dışarı aktarma işleminizi yanlış yazarsanız sorunlarla karşılaşabilirsiniz. Bu sorunları bulmanın ve çözmenin birincil yolu, %localappdata%\Microsoft\VisualStudio[yourVSVersion]\ComponentModelCache\Microsoft.VisualStudio.Default.err konumunda depolanan Yönetilen Genişletilebilirlik Çerçevesi (MEF) Oluşturma Hata Günlüğüne başvurmaktır.

BIR MEF bileşeni bölümünden düzenleyici işlevselliği alma

Mevcut kodunuz bir MEF bileşeni parçasıysa, düzenleyici bileşen parçalarını kullanmak için MEF meta verilerini kullanabilirsiniz.

BIR MEF bileşeni bölümünden düzenleyici işlevselliğini kullanmak için

  1. Genel derleme önbelleğinde (GAC) bulunan System.Composition.ComponentModel.dll dosyasına ve düzenleyici derlemelerine başvurular ekleyin.

  2. İlgili using yönergelerini ekleyin.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text;
    
  3. Özniteliğini [Import] aşağıda gösterildiği gibi hizmet arabiriminize ekleyin.

    [Import]
    ITextBufferFactoryService textBufferService;
    
  4. Hizmeti edindiğinizde, bileşenlerinden herhangi birini kullanabilirsiniz.

  5. Derlemenizi derledikten sonra *.. Visual Studio yüklemenizin \Common7\IDE\Components* klasörü.