Přehled deskriptorů typu

TypeDescriptor Architektura rozšiřuje možnosti.NET odraz.

Typ popisovače architektura

TypeDescriptor Architektury je postavena na motoru odrazu jádra a přidává další pravidla a funkce.Například TypeDescriptor třída podporuje slučování vlastnosti zařízení extender od IContainer, a také podporuje filtrování vlastnosti a události až IDesigner.

Kromě toho TypeDescriptor architektura umožňuje několik funkcí.Následující tabulka uvádí možnosti na architekturu.

Funkce

Description

Nahrazení instance

Umožňuje libovolného typu vytvářeného požádání jiného typu.

Nahrazování metadat

Umožňuje upravit metadata objektu.

Atribut přesměrování

Umožňuje dynamicky zadat atributy.

Cíl nahrazení a stínování

Povolí jeden objekt klidu jiném.

Rozšířený typ popisovače podpory

Umožňuje přístup k vlastnosti objektu přidat jiné objekty.

Pro podporu těchto funkcí TypeDescriptor třídy je úzce integrována se různé funkce.NET Framework součásti modelu.Je kompatibilní s objekty COM, zprostředkovatelů zařízení extender, návrháři a vlastnosti CLR.

[!POZNÁMKA]

Můžete použít TypeDescriptor v běhu kódu, jakož i kódu návrhu architektury.

Podpora rozšíření, TypeDescriptor třída má Průvodce vyhledáváním třídy nazvané TypeDescriptionProvider a Průvodce vyhledáváním atribut nazvaný TypeDescriptionProviderAttribute.Můžete použít TypeDescriptionProviderAttribute na třídě zavést zcela jiný způsob úniku metadat, který splňuje cíle návrhu.

Třída TypeDescriptionProvider

TypeDescriptionProvider Třídy lze považovat za modul plug-in pro TypeDescriptor třídy.Pro konkrétní instanci TypeDescriptor, může být více tříd zprostředkovatele popis typu, všechna metadata nabízení k TypeDescriptor.

Atribut TypeDescriptionProvider

TypeDescriptionProviderAttribute Je atribut, který můžete umístit na třídu.Tento atribut slouží k označení, že je typ vlastní popis typu zprostředkovatele přidružen.Atribut zase umožňuje, pomocí metadat, zprostředkovatel popisu typu instalace.Když tento typ předáno žádné rozhraní API TypeDescriptor třídy, TypeDescriptor tento atribut zjistí, vytvoří instanci zprostředkovatele pro popis typu popsaného v něm a zavěsí do tabulek interní zprostředkovatel TypeDescriptor.Po dokončení se TypeDescriptor pokračuje zpracování rozhraní API.Zpracování umožňuje typ automaticky nainstalovat vlastní typ zprostředkovatele popis na vyžádání.

Typ popisovače schopnosti

TypeDescriptor Architektura umožňuje funkce nad rámec.NET Framework odraz.

Nahrazení instance

Nahrazení instance dochází, když chcete vytvořit jeden typ, ale je odlišné od zadání požadavku na typ, který je ve skutečnosti vytvořena.Nahrazení instance dosáhnete při nahrazení všech volání na new s volání CreateInstance metoda.Tato metoda hledání vnitřní tabulek v rámci TypeDescriptor pro TypeDescriptionProvider objekt, který je spojen s daného datového typu.Pokud jej nalezne, deleguje volání daného objektu.

Nahrazování metadat

Nahrazování metadat dojde, když chcete upravit metadata pro jeden nebo více objektů.Společné uplatňování nahrazování metadat je při provádění návrhářů.Nahrazování metadat lze provést s poskytovateli popis typu, které lze přidat a odebrat pomocí následujících metod v TypeDescriptor:

Atribut přesměrování

V několika případech.NET Framework objektového modelu, kde typ vlastnosti záměrně provedené na nespecifickou.Například DataSource vlastnost DataGridView třída zadána jako object.Tento návrh umožní přijmout několik druhů vstupní zdroj dat, ale poskytuje žádné společné místo přidat metadata popisující charakteristiky, vlastnosti.Každá vlastnost zdroj dat v celém.NET Framework, musí mít identické metadat pro typ převaděče a uživatelské rozhraní (UI) typ editory.

AttributeProviderAttribute Třídy řeší tuto situaci.Pokud tento atribut je umístěn na vlastnost, pravidla změnit pro získání atributy pro vlastnost popisovač Attributes kolekce.Popisovač vlastnosti obvykle shromažďuje místní atributy a jejich sloučí s atributy z typ vlastnosti.Když AttributeProviderAttribute atribut se aplikuje, atributy jsou převzaty z typ vrácených AttributeProviderAttribute, nikoli z typ vlastní vlastnosti.AttributeProviderAttribute Zdroje dat pro určitý typ zdroje dat k bodu IListSource, a odpovídající metadat je umístěn na IListSource povolit datové vazby.Toto přesměrování umožňuje externí strany jako Visual Studio pro všechny zdroje dat snadno přidat metadata.

Atributy, které jsou získány z typu deklarován v AttributeProviderAttribute na vlastnosti mají prioritu mezi atributy typ vlastnosti a atributy.Úplnou sadu atributů, které jsou k dispozici je spojením v pořadí podle priority, jak je uvedeno v následujícím seznamu:

  1. Atributy vlastností

  2. Atribut atributy zprostředkovatele

  3. Atributy vlastností typu

Cíl nahrazení a stínování

Nahrazením cílového vyvolá jeden objekt zastupuje jiném.Společné uplatňování cíl nahrazení je při provádění návrhářů.

V.NET Framework návrháře architektura, součást může mít Návrhář přidružen.Tento designer můžete implementovat IDesignerFilter a poskytovat své vlastní vlastnosti.Tyto vlastnosti jsou sloučeny do vlastnosti pro součásti, ke které je přidružena Návrhář.Tyto vlastnosti mohou být nové součásti.Můžete také mají stejný název a typ jako vlastnosti součásti již definován.Při nové vlastnosti sdílí název a typ jako existující vlastnost, se nazývá zastínění, protože Návrhář skryje, nebo stíny, stávající vlastnosti součásti.Následující obrázek znázorňuje stínový vlastnost.

Stínové řízení vlastnost Text

Zde součást nabízí dvě vlastnosti a Návrhář také nabízí dvě vlastnosti.Text Vlastnost je nabízen Návrhář a komponenty a je právě stínem.Konečný výsledek volání GetProperties je tři vlastnosti.Existuje na součásti a existují další dvě na Návrhář.

Tuto vlastnost filtrování lze provést pomocí ITypeDescriptorFilterService, který implementuje plochy návrhu.TypeDescriptorMožnosti jsou vyžadovány, kdy je nastavit hodnotu vlastnosti.Kód nastavit hodnotu Grid vlastnost vypadat takto:

    gridProp.SetValue(component, value);

Zadejte skutečné informace o vlastnosti body k instanci návrhář není součást.Pokud byly skutečně nastavit vlastnost odraz volání, volání by zvýšit výjimku cíle vyvolání, protože instance komponenty neodpovídá typu návrháře.

TypeDescriptor Třída má vlastní logiky řešení této situace.Při volání vlastnosti TypeDescriptor kontroly, zda je typ člena instance objektu předaný třídy.Pokud ano, umožňuje volání pokračovat.Není-li třídu, pokusí se najít designer pro objekt a pokud návrhář lze nalézt a správného typu, nahradí třídy instance komponenty návrháře instance.

Následující metody na TypeDescriptor podporují cíl nahrazení:

Rozšířená podpora popisovač typu

GetExtendedTypeDescriptor Metoda vrátí popisovač rozšířeného vlastní typ pro daný objekt.Popisovač rozšířený typ je vlastní typ popisovače, který nabízí vlastnosti, které ostatní objekty přidali do tohoto objektu, ale ve skutečnosti nejsou definovány na objektu.Například v.NET Framework součást modelu, objekty této implementace IExtenderProvider rozhraní lze připojit vlastnosti jiné objekty, které jsou umístěny ve stejném IContainer.GetTypeDescriptor Metoda nevrátí typ popisovače, který poskytuje tyto další rozšířené vlastnosti, ale GetExtendedTypeDescriptor vrací sadu tyto rozšířené vlastnosti.TypeDescriptor Třídy automaticky slučuje výsledky těchto dvou vlastností kolekce.

[!POZNÁMKA]

Ačkoli.NET Framework komponenty modelu podporuje pouze rozšířené vlastnosti GetExtendedTypeDescriptor lze použít pro rozšířené atributy a také události, pokud zprostředkovatel popisu typu podporuje.

Viz také

Referenční dokumentace

TypeDescriptor

TypeDescriptionProvider

TypeDescriptionProviderAttribute

ICustomTypeDescriptor

CustomTypeDescriptor

IContainer

IDesigner

Další zdroje

Rozšíření podpory během návrhu