Udostępnij za pośrednictwem


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:TypeArgumentsz 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:TypeArgumentssię 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:TypeArgumentselement , 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ż