Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Editor je sestaven pomocí komponent MEF (Managed Extensibility Framework). Můžete vytvořit vlastní komponenty MEF pro rozšíření editoru a váš kód může využívat i součásti editoru.
MEF je knihovna .NET, která umožňuje přidávat a upravovat funkce aplikace nebo komponenty, které se řídí programovacím modelem MEF. Editor sady Visual Studio může poskytovat i využívat součásti MEF.
Soubor MEF je součástí sestavení .NET Framework verze 4 System.ComponentModel.Composition.dll .
Další informace o MEF naleznete v tématu Rozhraní MEF (Managed Extensibility Framework) (MEF).
Součásti a kontejnery složení
Součást komponenty je třída nebo člen třídy, která může provést jednu (nebo obě) z těchto věcí:
Spotřebovat jinou komponentu
Být spotřebován jiným komponentem
Představte si například nákupní aplikaci, která má součást pro zadávání objednávek, která závisí na datech dostupnosti produktu poskytovaných komponentou skladového skladu. V termínech MEF může část inventáře exportovat data o dostupnosti produktů a část zadávání objednávky může importovat data. Část zpracování objednávek a část správy zásob nemusí o sobě vědět; kontejner složení (poskytovaný hostitelskou aplikací) je zodpovědný za údržbu sady exportů a zajištění exportů a importů.
Kontejner složení CompositionContainer, je obvykle vlastněn hostitelem. Kontejner složení udržuje katalog exportovaných součástí.
Export a import součástí součásti
Můžete exportovat libovolnou funkci, pokud je implementována jako veřejná třída nebo veřejný člen třídy (vlastnost nebo metoda). Není nutné odvodit vaši komponentu z ComposablePart. Místo toho musíte přidat ExportAttribute atribut do třídy nebo člena třídy, který chcete exportovat. Tento atribut určuje kontrakt , podle kterého může jiná součást součásti importovat vaše funkce.
Smlouva o exportu
Definuje ExportAttribute entitu (třídu, rozhraní nebo strukturu), která se exportuje. Atribut exportu obvykle přebírá parametr, který určuje typ exportu.
[Export(typeof(ContentTypeDefinition))]
class TestContentTypeDefinition : ContentTypeDefinition { }
Ve výchozím nastavení atribut ExportAttribute definuje kontrakt, který je typem exportovací třídy.
[Export]
[Name("Structure")]
[Order(After = "Selection", Before = "Text")]
class TestAdornmentLayerDefinition : AdornmentLayerDefinition { }
V příkladu je výchozí [Export] atribut ekvivalentní [Export(typeof(TestAdornmentLayerDefinition))].
Můžete také exportovat vlastnost nebo metodu, jak je znázorněno v následujícím příkladu.
[Export]
[Name("Scarlet")]
[Order(After = "Selection", Before = "Text")]
public AdornmentLayerDefinition scarletLayerDefinition;
Importovat MEF Export
Pokud chcete použít export MEF, musíte znát kontrakt (obvykle typ), podle kterého byl exportován, a přidat ImportAttribute atribut, který má tuto hodnotu. Ve výchozím nastavení má atribut import jeden parametr, což je typ třídy, kterou upravuje. Následující řádky kódu importuje IClassificationTypeRegistryService typ.
[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;
Řešení potíží s importem a exportem: Přístup k protokolu chyb MEF Composition
Pokud se pokusíte naimportovat něco, co v aktuální instalaci VS neexistuje nebo pokud import nebo export nesprávně vytvoříte, může dojít k problémům. Primárním způsobem, jak tyto problémy najít a vyřešit, je odkazovat na Protokol chyb skladby MEF (Managed Extensibility Framework) uložený v %localappdata%\Microsoft\VisualStudio[yourVSVersion]\ComponentModelCache\Microsoft.VisualStudio.Default.err.
Získání funkcí editoru z části součásti MEF
Pokud je váš existující kód součástí součásti MEF, můžete použít metadata MEF ke zpracování částí součástí editoru.
Použít funkce editoru z části komponenty MEF
Přidejte odkazy na System.Composition.ComponentModel.dll, která je v globální mezipaměti sestavení (GAC), a také na sestavení editoru.
Přidejte příslušné direktivy using.
using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text;[Import]Přidejte atribut do rozhraní služby následujícím způsobem.[Import] ITextBufferFactoryService textBufferService;Jakmile službu získáte, můžete využívat některou z jejích komponent.
Po kompilaci sestavení ho vložte do složky *..\Common7\IDE\Components* ve vaší instalaci Visual Studio.