Typy ogólne w XAML
Usługi XAML platformy .NET zaimplementowane w programie System.Xaml zapewniają obsługę używania ogólnych typów CLR. Ta obsługa obejmuje określanie ograniczeń typów ogólnych jako argumentu typu i wymuszanie ograniczenia przez wywołanie odpowiedniej Add
metody dla ogólnych przypadków kolekcji. W tym temacie opisano aspekty używania i odwoływania się do typów ogólnych w języku XAML.
x:TypeArguments
x:TypeArguments
jest dyrektywą zdefiniowaną przez język XAML. Gdy jest używany jako element członkowski typu XAML, który jest wspierany przez typ ogólny, x:TypeArguments
przekazuje argumenty typu ograniczenia ogólnego do konstruktora kopii zapasowej. Aby zapoznać się ze składnią referencyjną dotyczącą korzystania x:TypeArguments
z usług XAML platformy .NET, która zawiera przykłady składni, zobacz x:TypeArguments, dyrektywa.
Ponieważ x:TypeArguments
pobiera ciąg i ma kopię zapasową konwertera typów, zwykle jest deklarowany w użyciu XAML jako atrybutu.
W strumieniu węzła XAML informacje zadeklarowane przez x:TypeArguments
program można uzyskać z XamlType.TypeArgumentsStartObject
pozycji w strumieniu węzła. Wartość zwracana XamlType.TypeArguments elementu to lista XamlType wartości. Określenie, czy typ XAML reprezentuje typ ogólny, można wywołać metodę XamlType.IsGeneric.
Reguły i konwencje składni dla typów ogólnych w języku XAML
W języku XAML typ ogólny musi być zawsze reprezentowany jako ograniczony rodzaj. Nieprzeciągnięty rodzaj ogólny nigdy nie istnieje w systemie typów XAML lub strumieniu węzła XAML i nie może być reprezentowany w znacznikach XAML. Ogólne można odwoływać się do składni atrybutów XAML w przypadkach, gdy jest to ograniczenie typu zagnieżdżonego ogólnego, do którego odwołuje x:TypeArguments
się element , lub w przypadkach, w których x:Type
dostarcza odwołanie typu CLR dla typu ogólnego. Odwoływanie się do typów ogólnych jest obsługiwane za pośrednictwem klasy zdefiniowanej XamlTypeTypeConverter przez usługi XAML platformy .NET.
Formularz składni atrybutów XAML włączony przez XamlTypeTypeConverter zmianę typowej konwencji składni MSIL / CLR, która używa nawiasów kątowych dla typów i ograniczeń ogólnych, a zamiast tego zastępuje nawiasy dla kontenera ograniczeń. Aby zapoznać się z przykładem, zobacz x:TypeArguments, dyrektywa.
Funkcje ogólne i XAML 2009
Jeśli używasz języka XAML 2009 zamiast mapowania typów podstawowych CLR w celu uzyskania typów XAML dla typów pierwotnych języka wspólnego, możesz użyć wbudowanych typów XAML 2009 jako elementów informacji w programie x:TypeArguments
. Można na przykład zadeklarować następujące (mapowania prefiksów nie są wyświetlane, ale x
jest przestrzenią nazw XAML języka XAML dla XAML 2009):
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
Obsługa typów ogólnych w WPF
W przypadku użycia XAML 2006 w przypadku określania wartości docelowej WPF klasa x: musi być również podana w tym samym elemecie co x:TypeArguments
element , a element ten musi być elementem głównym w dokumencie XAML. Element główny musi być mapowy na typ ogólny z co najmniej jednym argumentem typu. Może to być na przykład PageFunction<T>.
Możliwe obejścia dotyczące obsługi ogólnych użycia obejmują definiowanie niestandardowego rozszerzenia znaczników, które może zwracać typy ogólne, lub dostarczanie definicji klasy zawijania pochodzącej z typu ogólnego, ale spłaszczania ogólnego ograniczenia w własnej definicji klasy.
W WPF można używać funkcji XAML 2009 razem z x:TypeArguments
, ale tylko dla luźnego XAML (XAML, który nie jest skompilowany). Kod XAML skompilowany w języku XAML dla platformy WPF i formularza BAML języka XAML nie obsługuje obecnie słów kluczowych i funkcji XAML 2009.
Niestandardowe przepływy pracy w programie Windows Workflow Foundation dla programu .NET Framework 3.5 nie obsługują ogólnego użycia kodu XAML.
Zobacz też
.NET Desktop feedback