Delen via


Generieken in XAML

.NET XAML Services zoals geïmplementeerd in System.Xaml biedt ondersteuning voor het gebruik van algemene CLR-typen. Deze ondersteuning omvat het opgeven van de beperkingen van generieken als een typeargument en het afdwingen van de beperking door de juiste Add methode aan te roepen voor algemene verzamelingscases. In dit onderwerp worden aspecten van het gebruik en verwijzen naar algemene typen in XAML beschreven.

x:TypeArguments

x:TypeArguments is een richtlijn die wordt gedefinieerd door de XAML-taal. Wanneer deze wordt gebruikt als lid van een XAML-type dat wordt ondersteund door een algemeen type, geeft x:TypeArguments beperkingstypeargumenten van het algemene type door aan de back-upconstructor. Zie x:TypeArgumentsvoor referentiesyntaxis die betrekking hebben op het gebruik van .NET XAML Services van .

Omdat x:TypeArguments een tekenreeks gebruikt en het type conversieprogrammabacking heeft, wordt dit meestal gedeclareerd in XAML-gebruik als kenmerk.

In de XAML-knooppuntstroom kunnen de door x:TypeArguments gedeclareerde informatie worden verkregen van XamlType.TypeArguments op een StartObject positie in de knooppuntstroom. De retourwaarde van XamlType.TypeArguments is een lijst met XamlType waarden. Bepalen of een XAML-type een algemeen type vertegenwoordigt, kan worden gemaakt door XamlType.IsGenericaan te roepen.

Regels en syntaxisconventies voor generics in XAML

In XAML moet een algemeen type altijd worden weergegeven als een beperkt algemeen type. Een niet-gekoppeld algemeen is nooit aanwezig in het XAML-typesysteem of een XAML-knooppuntstroom en kan niet worden weergegeven in XAML-markeringen. Er kan naar een algemeen worden verwezen in de syntaxis van het XAML-kenmerk voor gevallen waarin wordt verwezen naar een geneste typebeperking van een algemeen waarnaar wordt verwezen door x:TypeArguments, of voor gevallen waarin x:Type een CLR-typereferentie levert voor een algemeen type. Referencing generics wordt ondersteund via de XamlTypeTypeConverter klasse gedefinieerd door .NET XAML Services.

Het XAML-kenmerksyntaxisformulier dat is ingeschakeld door XamlTypeTypeConverter wijzigt de typische MSIL/CLR-syntaxisconventie die hoekhaken gebruikt voor typen en beperkingen van generieken, en vervangt in plaats daarvan haakjes voor de beperkingscontainer. Zie voor een voorbeeld x:TypeArguments Directive.

Algemene functies en XAML 2009

Als u XAML 2009 gebruikt in plaats van de CLR-basistypen toe te passen om XAML-typen te verkrijgen voor algemene taalprimitieven, kunt u ingebouwde XAML 2009-typen gebruiken als informatie-items in x:TypeArguments. U kunt bijvoorbeeld het volgende declareren (voorvoegseltoewijzingen worden niet weergegeven, maar x is de XAML-taal XAML-naamruimte voor XAML 2009):

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

Algemene ondersteuning in WPF

Voor het gebruik van XAML 2006 bij het specifiek instellen van WPF moet x:Class ook worden opgegeven op hetzelfde element als x:TypeArgumentsen moet dat element het hoofdelement in een XAML-document zijn. Het hoofdelement moet worden toegewezen aan een algemeen type met ten minste één typeargument. Een voorbeeld is PageFunction<T>.

Mogelijke tijdelijke oplossingen voor het ondersteunen van algemeen gebruik zijn het definiëren van een aangepaste markeringsextensie die algemene typen kan retourneren, of het leveren van een wrapping-klassedefinitie die is afgeleid van een algemeen type, maar de algemene beperking in een eigen klassedefinitie afvlakt.

In WPF kunt u XAML 2009-functies samen met x:TypeArgumentsgebruiken, maar alleen voor losse XAML (XAML die niet is gecompileerd). Gecompileerde XAML voor WPF en de BAML-vorm van XAML bieden momenteel geen ondersteuning voor de trefwoorden en functies van XAML 2009.

Aangepaste werkstromen in Windows Workflow Foundation voor .NET Framework 3.5 bieden geen ondersteuning voor algemeen XAML-gebruik.

Zie ook