Obecné typy v jazyku XAML
Služby .NET XAML, jak jsou implementované v System.Xaml rámci, poskytují podporu pro používání obecných typů CLR. Tato podpora zahrnuje zadání omezení obecných typů jako argumentu typu a vynucení omezení voláním vhodné Add
metody pro obecné případy kolekce. Toto téma popisuje aspekty použití a odkazování na obecné typy v JAZYCE XAML.
x:TypeArguments
x:TypeArguments
je direktiva definovaná jazykem XAML. Pokud se používá jako člen typu XAML, který je podporován obecným typem, x:TypeArguments
předá argumenty omezujícího typu obecného konstruktoru. Referenční syntaxe, která se týká použití x:TypeArguments
služeb XAML .NET , která obsahuje příklady syntaxe, naleznete v tématu x:TypeArguments – direktiva.
Vzhledem k tomu x:TypeArguments
, že přebírá řetězec a má backing převaděče typů, je obvykle deklarován v použití XAML jako atribut.
Ve streamu uzlu XAML lze informace deklarované x:TypeArguments
pomocí získat z XamlType.TypeArguments pozice v datovém StartObject
proudu uzlu. Návratová XamlType.TypeArguments hodnota je seznam XamlType hodnot. Určení, zda typ XAML představuje obecný typ lze provést voláním XamlType.IsGeneric.
Pravidla a konvence syntaxe pro obecné typy v JAZYCE XAML
V jazyce XAML musí být obecný typ vždy reprezentován jako omezený obecný. Unconstrained generic is never present in the XAML type system or a XAML node stream and cannot be reprezentován v kódu XAML. Obecný odkaz může být odkazován v rámci syntaxe atributu XAML pro případy, kdy se jedná o omezení vnořeného typu obecného odkazovaného pomocí x:TypeArguments
, nebo pro případy, kdy x:Type
poskytuje odkaz na typ CLR pro obecný typ. Odkazování na obecné typy je podporováno prostřednictvím XamlTypeTypeConverter třídy definované službou .NET XAML Services.
Formulář syntaxe atributu XAML povolený XamlTypeTypeConverter změnou typické syntaxe MSIL / CLR syntaxe, která používá úhlové závorky pro typy a omezení obecných typů a místo toho nahrazuje závorky pro kontejner omezení. Příklad najdete v x :TypeArguments – direktiva.
Obecné typy a funkce XAML 2009
Pokud místo mapování základních typů CLR použijete XAML 2009 k získání typů XAML pro běžné jazykové primitivy, můžete jako informační položky x:TypeArguments
použít předdefinované typy XAML 2009 . Můžete například deklarovat následující (mapování předpon se nezobrazují, ale x
je to obor názvů XAML jazyka XAML pro XAML 2009):
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
Podpora obecných typů ve WPF
Pro použití XAML 2006, pokud konkrétně cílí WPF, x:Class musí být také k dispozici na stejném prvku jako x:TypeArguments
a tento element musí být kořenovým elementem v dokumentu XAML. Kořenový prvek musí být mapovat na obecný typ s alespoň jedním argumentem typu. Příklad: PageFunction<T>.
Možná alternativní řešení pro podporu obecných použití zahrnují definování vlastního rozšíření značek, které může vracet obecné typy, nebo poskytnutí definice zabalené třídy, která je odvozena od obecného typu, ale zplošťuje obecné omezení v jeho vlastní definici třídy.
Ve WPF můžete používat funkce XAML 2009 společně s x:TypeArguments
, ale pouze pro volné XAML (XAML, který není zkompilován značek). Kód XAML zkompilovaný pro WPF a formát BAML XAML v současné době nepodporují klíčová slova a funkce XAML 2009.
Vlastní pracovní postupy ve Windows Workflow Foundation pro .NET Framework 3.5 nepodporují obecné použití XAML.
Viz také
.NET Desktop feedback