Dil hizmeti ve düzenleyici uzantı noktaları
Düzenleyici, çoğu dil hizmeti özelliği de dahil olmak üzere Yönetilen Genişletilebilirlik Çerçevesi (MEF) bileşen parçaları olarak genişletebileceğiniz uzantı noktaları sağlar. Ana uzantı noktası kategorileri şunlardır:
İçerik türleri
Sınıflandırma türleri ve sınıflandırma biçimleri
Kenar boşlukları ve kaydırma çubukları
Etiketler
Süsleme -leri
Fare işlemcileri
İşleyicileri bırakma
Seçenekler
IntelliSense
İçerik türlerini genişletme
İçerik türleri, düzenleyici tarafından işlenen metin türlerinin tanımlarıdır; örneğin, "text", "code" veya "CSharp". Türün değişkenini bildirerek ve yeni içerik türüne ContentTypeDefinition benzersiz bir ad vererek yeni bir içerik türü tanımlarsınız. İçerik türünü düzenleyiciye kaydetmek için aşağıdaki özniteliklerle birlikte dışarı aktarın:
NameAttribute , içerik türünün adıdır.
BaseDefinitionAttribute , bu içerik türünün türetildiği içerik türünün adıdır. bir içerik türü birden çok diğer içerik türünden devralabilir.
ContentTypeDefinition Sınıf korumalı olduğundan, bunu tür parametresi olmadan dışarı aktarabilirsiniz.
Aşağıdaki örnekte, bir içerik türü tanımındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export]
[Name("test")]
[BaseDefinition("code")]
[BaseDefinition("projection")]
internal static ContentTypeDefinition TestContentTypeDefinition;
İçerik türleri sıfır veya daha fazla önceden var olan içerik türünü temel alabilir. Yerleşik türler şunlardır:
Herhangi biri: temel içerik türü. Diğer tüm içerik türlerinin üst öğesi.
Metin: Projeksiyon olmayan içerik için temel tür. "any" öğesinden devralır.
Düz metin: kod olmayan metinler için. "Metin" öğesinden devralır.
Kod: her türlü kod için. "Metin" öğesinden devralır.
Eylemsiz: Metni herhangi bir işleme türünün dışında tutar. Bu içerik türünün metnine hiçbir zaman uzantı uygulanmaz.
Projeksiyon: projeksiyon arabelleklerinin içeriği için. "any" öğesinden devralır.
IntelliSense: IntelliSense içeriği için. "Metin" öğesinden devralır.
Sighelp: imza yardımı. "intellisense" öğesini devralır.
Sighelp-doc: imza yardımı belgeleri. "intellisense" öğesini devralır.
Visual Studio tarafından tanımlanan içerik türlerinden bazıları ve Visual Studio'da barındırılan dillerden bazıları şunlardır:
Temel
C/C++
ConsoleOutput
CSharp
CSS
ENC
FindResults
F#
HTML
JScript
XAML
XML
Kullanılabilir içerik türlerinin listesini bulmak için, düzenleyicinin IContentTypeRegistryServiceiçerik türleri koleksiyonunu koruyan öğesini içeri aktarın. Aşağıdaki kod bu hizmeti bir özellik olarak içeri aktarır.
[Import]
internal IContentTypeRegistryService ContentTypeRegistryService { get; set; }
İçerik türünü dosya adı uzantısıyla ilişkilendirmek için kullanın FileExtensionToContentTypeDefinition.
Not
Visual Studio'da, dosya adı uzantıları bir dil hizmeti paketinde kullanılarak ProvideLanguageExtensionAttribute kaydedilir. , FileExtensionToContentTypeDefinition bir MEF içerik türünü bu şekilde kaydedilmiş bir dosya adı uzantısıyla ilişkilendirir.
Dosya adı uzantısını içerik türü tanımına aktarmak için aşağıdaki öznitelikleri eklemeniz gerekir:
FileExtensionAttribute: dosya adı uzantısını belirtir.
ContentTypeAttribute: içerik türünü belirtir.
FileExtensionToContentTypeDefinition Sınıf korumalı olduğundan, bunu tür parametresi olmadan dışarı aktarabilirsiniz.
Aşağıdaki örnek, dosya adı uzantısındaki dışarı aktarma özniteliklerini içerik türü tanımına gösterir.
[Export]
[FileExtension(".test")]
[ContentType("test")]
internal static FileExtensionToContentTypeDefinition TestFileExtensionDefinition;
, IFileExtensionRegistryService dosya adı uzantıları ve içerik türleri arasındaki ilişkilendirmeleri yönetir.
Sınıflandırma türlerini ve sınıflandırma biçimlerini genişletme
Farklı işleme sağlamak istediğiniz metin türlerini tanımlamak için sınıflandırma türlerini kullanabilirsiniz (örneğin, "anahtar sözcük" metnini mavi ve "açıklama" metnini yeşil renklendirme). Türünde bir değişken bildirerek ve benzersiz bir ad vererek yeni bir sınıflandırma türü ClassificationTypeDefinition tanımlayın.
Sınıflandırma türünü düzenleyiciye kaydetmek için aşağıdaki özniteliklerle birlikte dışarı aktarın:
NameAttribute: sınıflandırma türünün adı.
BaseDefinitionAttribute: Bu sınıflandırma türünün devraldığı sınıflandırma türünün adı. Tüm sınıflandırma türleri "metinden" devralır ve bir sınıflandırma türü diğer birden çok sınıflandırma türünden devralabilir.
ClassificationTypeDefinition Sınıf korumalı olduğundan, bunu tür parametresi olmadan dışarı aktarabilirsiniz.
Aşağıdaki örnekte sınıflandırma türü tanımındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export]
[Name("csharp.test")]
[BaseDefinition("test")]
internal static ClassificationTypeDefinition CSharpTestDefinition;
standart IStandardClassificationService sınıflandırmalara erişim sağlar. Yerleşik sınıflandırma türleri şunlardır:
"metin"
"doğal dil" ("metinden türetilir")
"resmi dil" ("metinden" türetilir)
"string" ("değişmez değerden" türetilir)
"character" ("değişmez değerden" türetilir)
"sayısal" ("değişmez değerden" türetilir)
'den ErrorTypeDefinitiondevralınan farklı hata türleri kümesi. Bunlar aşağıdaki hata türlerini içerir:
"söz dizimi hatası"
"derleyici hatası"
"diğer hata"
"uyarı"
Kullanılabilir sınıflandırma türlerinin listesini bulmak için, düzenleyici için sınıflandırma türleri koleksiyonunu koruyan öğesini içeri aktarın IClassificationTypeRegistryService. Aşağıdaki kod bu hizmeti bir özellik olarak içeri aktarır.
[Import]
internal IClassificationTypeRegistryService ClassificationTypeRegistryService { get; set; }
Yeni sınıflandırma türünüz için bir sınıflandırma biçimi tanımı tanımlayabilirsiniz. sınıfından ClassificationFormatDefinition bir sınıf türetin ve aşağıdaki özniteliklerle birlikte türüyle EditorFormatDefinitiondışarı aktarın:
NameAttribute: biçimin adı.
DisplayNameAttribute: biçimin görünen adı.
UserVisibleAttribute: Biçimin Seçenekler iletişim kutusunun Yazı Tipleri ve Renkler sayfasında görünüp görünmeyeceğini belirtir.
OrderAttribute: biçimin önceliği. Geçerli değerler kimdendir Priority.
ClassificationTypeAttribute: Bu biçimin eşlendiği sınıflandırma türünün adı.
Aşağıdaki örnek, sınıflandırma biçimi tanımındaki dışarı aktarma özniteliklerini gösterir.
[Export(typeof(EditorFormatDefinition))]
[ClassificationType(ClassificationTypeNames = "test")]
[Name("test")]
[DisplayName("Test")]
[UserVisible(true)]
[Order(After = Priority.Default, Before = Priority.High)]
internal sealed class TestFormat : ClassificationFormatDefinition
Kullanılabilir biçimlerin listesini bulmak için, düzenleyicinin IEditorFormatMapServicebiçim koleksiyonunu koruyan öğesini içeri aktarın. Aşağıdaki kod bu hizmeti bir özellik olarak içeri aktarır.
[Import]
internal IEditorFormatMapService FormatMapService { get; set; }
Kenar boşluklarını ve kaydırma çubuklarını genişletme
Kenar boşlukları ve kaydırma çubukları, metin görünümünün kendisine ek olarak düzenleyicinin ana görünüm öğeleridir. Metin görünümünün çevresinde görünen standart kenar boşluklarına ek olarak istediğiniz sayıda kenar boşluğu sağlayabilirsiniz.
Kenar boşluğu tanımlamak için bir IWpfTextViewMargin arabirim uygulayın. Kenar boşluğu oluşturmak için arabirimini de uygulamanız IWpfTextViewMarginProvider gerekir.
Kenar boşluğu sağlayıcısını düzenleyiciye kaydetmek için sağlayıcıyı aşağıdaki özniteliklerle birlikte dışarı aktarmanız gerekir:
NameAttribute: kenar boşluğunun adı.
OrderAttribute: diğer kenar boşluklarına göre kenar boşluğunun görüntülendiği sıra.
Yerleşik kenar boşlukları şunlardır:
"Wpf Yatay Kaydırma Çubuğu"
"Wpf Dikey Kaydırma Çubuğu"
"Wpf Satır Numarası Kenar Boşluğu"
Order özniteliğine
After="Wpf Horizontal Scrollbar"
sahip yatay kenar boşlukları yerleşik kenar boşluğunun altında, order özniteliğineBefore ="Wpf Horizontal Scrollbar"
sahip yatay kenar boşlukları ise yerleşik kenar boşluğunun üzerinde görüntülenir. Order özniteliğineAfter="Wpf Vertical Scrollbar"
sahip sağ dikey kenar boşlukları kaydırma çubuğunun sağ kısmında görüntülenir. Order özniteliğineAfter="Wpf Line Number Margin"
sahip sol dikey kenar boşlukları, satır numarası kenar boşluğunun solunda görünür (görünüyorsa).
MarginContainerAttribute: kenar boşluğunun türü (sol, sağ, üst veya alt).
ContentTypeAttribute: kenar boşluğunuzun geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
Aşağıdaki örnekte, satır numarası kenar boşluğunun sağ tarafında görünen bir kenar boşluğu için kenar boşluğu sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export(typeof(IWpfTextViewMarginProvider))]
[Name("TestMargin")]
[Order(Before = "Wpf Line Number Margin")]
[MarginContainer(PredefinedMarginNames.Left)]
[ContentType("text")]
Etiketleri genişletme
Etiketler, verileri farklı metin türleriyle ilişkilendirmenin bir yoludur. Çoğu durumda, ilişkili veriler görsel efekt olarak görüntülenir, ancak tüm etiketlerin görsel bir sunusu yoktur. uygulayarak ITagkendi etiket türünüzü tanımlayabilirsiniz. Ayrıca, belirli bir metin aralığı kümesinin etiketlerini sağlamak için ve etiketleyiciyi sağlamak için de uygulamanız ITagger<T> ITaggerProvider gerekir. Aşağıdaki özniteliklerle birlikte etiketleme sağlayıcısını dışarı aktarmanız gerekir:
ContentTypeAttribute: etiketinizin geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
TagTypeAttribute: etiket türü.
Aşağıdaki örnekte, bir etiketleme sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
<CodeContentPlaceHolder>8 Aşağıdaki etiket türleri yerleşiktir:
ClassificationTag: ile IClassificationTypeilişkilendirildi.
ErrorTag: hata türleriyle ilişkilendirildi.
TextMarkerTag: bir donatma ile ilişkilidir.
Not
örneği TextMarkerTagiçin İzlenecek Yol: Metni Vurgulama başlığı altında HighlightWordTag tanımına bakın.
OutliningRegionTag: anahat oluşturmada genişletilebilen veya daraltılabilen bölgelerle ilişkili.
SpaceNegotiatingAdornmentTag: bir süslemenin metin görünümünde kapladığı boşluğu tanımlar. Alan anlaşması süslemeleri hakkında daha fazla bilgi için aşağıdaki bölüme bakın.
IntraTextAdornmentTag: süsleme için otomatik aralık ve boyutlandırma sağlar.
Arabelleklerin ve görünümlerin IViewTagAggregatorFactoryService etiketlerini bulmak ve kullanmak için veya öğesini içeri aktarın IBufferTagAggregatorFactoryService. Bu, size istenen türden bir ITagAggregator<T> ad verir. Aşağıdaki kod bu hizmeti bir özellik olarak içeri aktarır.
[Import]
internal IViewTagAggregatorFactoryService ViewTagAggregatorFactoryService { get; set; }
Etiketler ve MarkerFormatDefinitions
Bir etiketin MarkerFormatDefinition görünümünü tanımlamak için sınıfını genişletebilirsiniz. Sınıfınızı (olarak EditorFormatDefinition) aşağıdaki özniteliklerle dışarı aktarmanız gerekir:
NameAttribute: Bu biçime başvurmak için kullanılan ad
UserVisibleAttribute: bu, biçimin kullanıcı arabiriminde görünmesine neden olur
Oluşturucuda, etiketin görünen adını ve görünümünü tanımlarsınız. BackgroundColor dolgu rengini ve ForegroundColor kenarlık rengini tanımlar. DisplayName, biçim tanımının yerelleştirilebilir adıdır.
Aşağıda bir biçim tanımı örneği verilmiştir:
[Export(typeof(EditorFormatDefinition))]
[Name("MarkerFormatDefinition/HighlightWordFormatDefinition")]
[UserVisible(true)]
internal class HighlightWordFormatDefinition : MarkerFormatDefinition
{
public HighlightWordFormatDefinition()
{
this.BackgroundColor = Colors.LightBlue;
this.ForegroundColor = Colors.DarkBlue;
this.DisplayName = "Highlight Word";
this.ZOrder = 5;
}
}
Bu biçim tanımını bir etikete uygulamak için sınıfın name özniteliğinde ayarladığınız ada (görünen ada değil) başvurun.
Not
örneği MarkerFormatDefinitioniçin İzlenecek Yol: Metni Vurgulama'daki HighlightWordFormatDefinition sınıfına bakın.
Süslemeleri genişletme
Kenarlıklar, metin görünümünde görüntülenen metne veya metin görünümünün kendisine eklenebilen görsel efektleri tanımlar. Kendi süslemenizi herhangi bir tür UIElementolarak tanımlayabilirsiniz.
Donatma sınıfınızda bir AdornmentLayerDefinitionbildirmeniz gerekir. Donatma katmanınızı kaydetmek için aşağıdaki özniteliklerle birlikte dışarı aktarın:
NameAttribute: süslemenin adı.
OrderAttribute: diğer süsleme katmanlarına göre süslemenin sıralanması. sınıfı PredefinedAdornmentLayers dört varsayılan katmanı tanımlar: Seçim, Ana Hat Oluşturma, Şapka İşareti ve Metin.
Aşağıdaki örnekte, bir donatma katmanı tanımındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export]
[Name("TestEmbeddedAdornment")]
[Order(After = PredefinedAdornmentLayers.Selection, Before = PredefinedAdornmentLayers.Text)]
internal AdornmentLayerDefinition testLayerDefinition;
Donatma örneğini oluşturarak olayını uygulayan IWpfTextViewCreationListener ve işleyen TextViewCreated ikinci bir sınıf oluşturmanız gerekir. Bu sınıfı aşağıdaki özniteliklerle birlikte dışarı aktarmanız gerekir:
ContentTypeAttribute: süslemenin geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
TextViewRoleAttribute: bu süslemenin geçerli olduğu metin görünümünün türü. sınıfı PredefinedTextViewRoles , önceden tanımlanmış metin görünümü rolleri kümesine sahiptir. Örneğin, Document öncelikli olarak dosyaların metin görünümleri için kullanılır. Interactive , kullanıcının fare ve klavye kullanarak düzenleyebileceği veya gezinebileceği metin görünümleri için kullanılır. Görünümlere örnek olarak Interactive düzenleyici metin görünümü ve Çıkış penceresi verilebilir.
Aşağıdaki örnekte, donatma sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export(typeof(IWpfTextViewCreationListener))]
[ContentType("csharp")]
[TextViewRole(PredefinedTextViewRoles.Document)]
internal sealed class TestAdornmentProvider : IWpfTextViewCreationListener
Boşluk anlaşması, metinle aynı düzeyde alan kaplayan bir kenarlıktır. Bu tür bir donatma oluşturmak için, öğesinden SpaceNegotiatingAdornmentTagdevralan, süslemenin kapladığı alan miktarını tanımlayan bir etiket sınıfı tanımlamanız gerekir.
Tüm süslemelerde olduğu gibi, donatma katmanı tanımını dışarı aktarmanız gerekir.
[Export]
[Name("TestAdornment")]
[Order(After = DefaultAdornmentLayers.Text)]
internal AdornmentLayerDefinition testAdornmentLayer;
Alan anlaşması süslemesinin örneğini oluşturmak için uygulayan ITaggerProvidersınıfa ek olarak uygulayan IWpfTextViewCreationListener bir sınıf oluşturmanız gerekir (diğer türlerde olduğu gibi).
Etiketleme sağlayıcısını kaydetmek için aşağıdaki özniteliklerle birlikte dışarı aktarmanız gerekir:
ContentTypeAttribute: donatmanızın geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
TextViewRoleAttribute: bu etiketin veya süslemenin geçerli olduğu metin görünümü türü. sınıfı PredefinedTextViewRoles , önceden tanımlanmış metin görünümü rolleri kümesine sahiptir. Örneğin, Document öncelikli olarak dosyaların metin görünümleri için kullanılır. Interactive , kullanıcının fare ve klavye kullanarak düzenleyebileceği veya gezinebileceği metin görünümleri için kullanılır. Görünümlere örnek olarak Interactive düzenleyici metin görünümü ve Çıkış penceresi verilebilir.
TagTypeAttribute: tanımladığınız etiket veya süsleme türü. için SpaceNegotiatingAdornmentTagbir saniye TagTypeAttribute eklemeniz gerekir.
Aşağıdaki örnekte, alan anlaşması yapılan bir donatma etiketi için etiketleme sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export(typeof(ITaggerProvider))]
[ContentType("text")]
[TextViewRole(PredefinedTextViewRoles.Document)]
[TagType(typeof(SpaceNegotiatingAdornmentTag))]
[TagType(typeof(TestSpaceNegotiatingTag))]
internal sealed class TestTaggerProvider : ITaggerProvider
Fare İşlemcilerini Genişletme
Fare girişi için özel işleme ekleyebilirsiniz. öğesinden MouseProcessorBase devralan bir sınıf oluşturun ve işlemek istediğiniz giriş için fare olaylarını geçersiz kılın. Ayrıca ikinci bir sınıfta uygulamalı IMouseProcessorProvider ve fare işleyicinizin geçerli olduğu içerik türünü ("metin" veya "kod") belirten ile ContentTypeAttribute birlikte dışarı aktarmalısınız.
Aşağıdaki örnekte, bir fare işlemci sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export(typeof(IMouseProcessorProvider))]
[Name("test mouse processor")]
[ContentType("text")]
[TextViewRole(PredefinedTextViewRoles.Interactive)]
internal sealed class TestMouseProcessorProvider : IMouseProcessorProvider
Bırakma işleyicilerini genişletme
Uygulayan bir sınıf ve bırakma işleyicisini oluşturmak için uygulayan ikinci bir sınıf IDropHandler oluşturarak belirli metin türleri için bırakma işleyicilerinin IDropHandlerProvider davranışını özelleştirebilirsiniz. Bırakma işleyicisini aşağıdaki özniteliklerle birlikte dışarı aktarmanız gerekir:
DropFormatAttribute: Bu bırakma işleyicisinin geçerli olduğu metin biçimi. Aşağıdaki biçimler en yüksekten en düşüğe öncelik sırasına göre işlenir:
Herhangi bir özel biçim
Filedrop
EnhancedMetafile
Waveaudio
Rıff
Dıf
Yerel ayar
Palet
PenData
Serileştirilebilir
SymbolicLink
Xaml
XamlPackage
Tıff
Bitmap
Dıb
Meta DosyasıPicture
CSV
System
HTML Biçimi
Unicodetext
OEMText
Metin
NameAttribute: bırakma işleyicisinin adı.
OrderAttribute: Bırakma işleyicisinin varsayılan bırakma işleyicisi öncesinde veya sonrasında sıralanması. Visual Studio için varsayılan bırakma işleyicisi "DefaultFileDropHandler" olarak adlandırılır.
Aşağıdaki örnekte, bırakma işleyici sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
[Export(typeof(IDropHandlerProvider))]
[DropFormat("Text")]
[Name("TestDropHandler")]
[Order(Before="DefaultFileDropHandler")]
internal class TestDropHandlerProvider : IDropHandlerProvider
Düzenleyici Seçeneklerini Genişletme
Yalnızca belirli bir kapsamda, örneğin metin görünümünde geçerli olacak seçenekler tanımlayabilirsiniz. Düzenleyici önceden tanımlanmış bu seçenekler kümesini sağlar: düzenleyici seçenekleri, görünüm seçenekleri ve Windows Presentation Foundation (WPF) görünüm seçenekleri. Bu seçenekler , DefaultTextViewOptionsve DefaultWpfViewOptionsiçinde DefaultOptionsbulunabilir.
Yeni bir seçenek eklemek için şu seçenek tanımı sınıflarından birinden bir sınıf türetin:
-
Aşağıdaki örnek, Boole değeri olan bir seçenek tanımının nasıl dışarı aktarıldığını gösterir.
[Export(typeof(EditorOptionDefinition))]
internal sealed class TestOption : EditorOptionDefinition<bool>
IntelliSense'i genişletme
IntelliSense, yapılandırılmış metin ve bunun için deyim tamamlama hakkında bilgi sağlayan bir özellik grubu için genel bir terimdir. Bu özellikler arasında deyim tamamlama, imza yardımı, Hızlı Bilgi ve ampuller bulunur. Deyim tamamlama, kullanıcıların bir dil anahtar sözcüğünü veya üye adını doğru yazmalarını sağlar. İmza yardımı, kullanıcının yeni yazdığı yöntemin imzasını veya imzalarını görüntüler. Hızlı Bilgi, fare üzerine geldiğinde bir tür veya üye adı için tam imza görüntüler. Ampul, belirli bağlamlardaki belirli tanımlayıcılar için ek eylemler sağlar. Örneğin, bir yineleme yeniden adlandırıldıktan sonra bir değişkenin tüm oluşumlarını yeniden adlandırma.
IntelliSense özelliğinin tasarımı her durumda çok aynıdır:
IntelliSense aracısı genel işlemden sorumludur.
IntelliSense oturumu , sunucunun tetiklenmesi ile seçimin committal veya iptali arasındaki olayların sırasını temsil eder. Oturum genellikle bazı kullanıcı hareketleri tarafından tetikleniyor.
IntelliSense denetleyicisi , oturumun ne zaman başlaması ve bitmesi gerektiğine karar vermekle sorumludur. Ayrıca bilgilerin ne zaman işlenmesi gerektiğine ve oturumun ne zaman iptal edilmesi gerektiğine de karar verir.
IntelliSense kaynağı içeriği sağlar ve en iyi eşleşmeye karar verir.
İçeriği görüntülemek IntelliSense sunucusu tarafından sorumludur.
Çoğu durumda, en az bir kaynak ve denetleyici sağlamanızı öneririz. Ayrıca, ekranı özelleştirmek istiyorsanız bir sunucu da sağlayabilirsiniz.
IntelliSense Kaynağı Uygulama
Bir kaynağı özelleştirmek için aşağıdaki kaynak arabirimlerinden birini (veya daha fazlasını) uygulamanız gerekir:
Önemli
ISmartTagSource yerine kullanım dışı bırakılmıştır ISuggestedActionsSource.
Ayrıca, aynı türde bir sağlayıcı uygulamanız gerekir:
Önemli
ISmartTagSourceProvider yerine kullanım dışı bırakılmıştır ISuggestedActionsSourceProvider.
Sağlayıcıyı aşağıdaki özniteliklerle birlikte dışarı aktarmanız gerekir:
NameAttribute: kaynağın adı.
ContentTypeAttribute: kaynağın geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
OrderAttribute: kaynağın görünme sırası (diğer kaynaklara göre).
Aşağıdaki örnekte, bir tamamlama kaynağı sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
Export(typeof(ICompletionSourceProvider))]
[Name(" Test Statement Completion Provider")]
[Order(Before = "default")]
[ContentType("text")]
internal class TestCompletionSourceProvider : ICompletionSourceProvider
IntelliSense kaynaklarını uygulama hakkında daha fazla bilgi için aşağıdaki kılavuzlara bakın:
IntelliSense denetleyicisi uygulama
Denetleyiciyi özelleştirmek için arabirimini IIntellisenseController uygulamanız gerekir. Ayrıca, aşağıdaki özniteliklerle birlikte bir denetleyici sağlayıcısı uygulamanız gerekir:
NameAttribute: denetleyicinin adı.
ContentTypeAttribute: denetleyicinin geçerli olduğu içerik türü (örneğin, "metin" veya "kod").
OrderAttribute: denetleyicinin görünme sırası (diğer denetleyicilere göre).
Aşağıdaki örnekte, bir tamamlama denetleyicisi sağlayıcısındaki dışarı aktarma öznitelikleri gösterilmektedir.
Export(typeof(IIntellisenseControllerProvider))]
[Name(" Test Controller Provider")]
[Order(Before = "default")]
[ContentType("text")]
internal class TestIntellisenseControllerProvider : IIntellisenseControllerProvider
IntelliSense denetleyicilerini kullanma hakkında daha fazla bilgi için aşağıdaki kılavuzlara bakın: