Mapowanie typów WinRT w .NET przy użyciu C#/WinRT

W tym artykule wymieniono mapowania, które C#/WinRT tworzy między typami środowisko wykonawcze systemu Windows (WinRT) a typami .NET w aplikacjach komputerowych przeznaczonych dla .NET 6 (lub nowszych). W tych aplikacjach Visual Studio IntelliSense wyświetla typ .NET zamiast typu środowisko wykonawcze systemu Windows. Jeśli na przykład metoda środowisko wykonawcze systemu Windows przyjmuje parametr typu IVector<string>, następnie funkcja IntelliSense wyświetla parametr typu IList<string>. Podobnie w składniku WinRT utworzonym przy użyciu języka C#/WinRT należy użyć typu .NET w podpisach składowych. W przypadku generowania składnika środowisko wykonawcze systemu Windows przy użyciu języka C#/WinRT typ .NET jest tłumaczony na odpowiadający mu typ WinRT.

Mapowania typów niestandardowych języka C#/WinRT są klasyfikowane według typów w zestawie SDK Windows lub w WinUI 3 (WinUI jest częścią Zestaw SDK do aplikacji systemu Windows). Typy WinRT dla mapowań zestawów SDK Windows znajdują się w przestrzeniach nazw Windows.*, a typy WinRT dla mapowań WinUI znajdują się w przestrzeniach nazw Microsoft.UI.Xaml.*. Istnieją dwie przyczyny mapowań typów niestandardowych, które są tworzone przez język C#/WinRT dla typów WinRT:

  • Typy WinRT mapujące na typy .NET o innej nazwie i/lub przestrzeni nazw. Te niestandardowe mapowania są przeznaczone do mapowania typów WinRT na istniejące odpowiedniki .NET. Istnieją również przypadki, w których mapowanie prowadzi do innego typu (np. typ wartości jest mapowany na typ klasy).

  • Typy WinRT mapujące na typy .NET o tej samej nazwie i przestrzeni nazw. Te niestandardowe mapowania zwykle dotyczą wydajności lub ulepszeń i są implementowane bezpośrednio w języku C#. Większość typów, które mają tę samą nazwę przestrzeni nazw i nazwę typu w winRT i .NET są strukturami (lub typami skojarzonymi ze strukturami, takimi jak wyliczenia). W środowisku WinRT struktury nie mają członków innych niż pola i wymagają typów pomocniczych, które ukrywa .NET. Wersje .NET tych struktur mają właściwości i metody, które zapewniają funkcjonalność ukrytych typów pomocnika (na przykład Windows.UI.Color).

Uwaga / Notatka

Aby uzyskać listę mapowań między typami WinRT i .NET w kontekście aplikacji platformy UWP, zobacz mapowania typów .NET oraz środowisko wykonawcze systemu Windows.

Mapowania typów WinRT w pakiecie SDK Windows

Typy o innej nazwie i/lub przestrzeni nazw

Typ/przestrzeń nazw WinRT .NET typ/przestrzeń nazw
DateTime (Windows.Foundation) DateTimeOffset (System)
EventHandler<T> (Windows.Foundation) EventHandler<T> (System)
EventRegistrationToken (Windows.Foundation) EventRegistrationToken (WinRT)
HResult (Windows.Foundation) Wyjątek (system)
IClosable (Windows.Foundation) IDisposable (System)
IReference<T> (Windows.Foundation) Nullable<T> (System)
TimeSpan (Windows.Foundation) TimeSpan (system)
Identyfikator URI (Windows. Fundacja) Identyfikator URI (System)
IIterable<T> (Windows. Foundation.Collections) IEnumerable<T> (System.Collections.Generic)
IIterator<T> (Windows. Foundation.Collections) IEnumerator<T> (System.Collections.Generic)
IMap<K,V> (Windows. Foundation.Collections) IDictionary<TKey,TValue> (System.Collections.Generic)
IMapView<K,V> (Windows. Foundation.Collections) IReadOnlyDictionary<TKey,TValue> (System.Collections.Generic)
IKeyValuePair<K,V> (Windows. Foundation.Collections) KeyValuePair<TKey,TValue> (System.Collections.Generic)
IVector<T> (Windows. Foundation.Collections) IList<T> (System.Collections.Generic)
IVectorView<T> (Windows. Foundation.Collections) IReadOnlyList<T> (System.Collections.Generic)
AttributeTargets (Windows. Foundation.Metadata) AttributeTargets (System)
AttributeUsageAttribute (Windows. Foundation.Metadata) AttributeUsageAttribute (System)
Macierz3x2 (Windows. Foundation.Numerics) Matrix3x2 (System.Numerics)
Macierz4x4 (Windows. Foundation.Numerics) Macierz4x4 (System.Numerics)
Płaszczyzna (Windows. Foundation.Numerics) Płaszczyzna (System.Numerics)
Quaternion (Windows. Foundation.Numerics) Quaternion (System.Numerics)
Vector2 (Windows. Foundation.Numerics) Vector2 (System.Numerics)
Vector3 (Windows. Foundation.Numerics) Vector3 (System.Numerics)
Vector4 (Windows. Foundation.Numerics) Vector4 (System.Numerics)
IBindableIterable (Windows.UI.Xaml.Interop) IEnumerable (System.Collections)
IBindableVector (Windows.UI.Xaml.Interop) IList [System.Collections]
TypeName (Windows.UI.Xaml.Interop) Typ (system)

Typy o tej samej nazwie i przestrzeni nazw

Typ Namespace
IPropertyValue Windows. Foundation
IReferenceArray<T> Windows. Foundation
Point Windows. Foundation
Prostokąt Windows. Foundation
Rozmiar Windows. Foundation
Kolor Windows UI
TypeKind Windows.UI.Xaml.Interop

Mapowania typów WinRT w WinUI

Typy o innej nazwie i/lub przestrzeni nazw

Typ/przestrzeń nazw WinRT .NET typ/przestrzeń nazw
INotifyCollectionChanged (Microsoft.UI.Xaml.Data) INotifyCollectionChanged (System.Collections.Specialized)
NotifyCollectionChangedEventHandler (Microsoft.UI.Xaml.Data) NotifyCollectionChangedEventHandler (System.Collections.Specialized)
NotifyCollectionChangedEventArgs (Microsoft UI Xaml.Data) NotifyCollectionChangedEventArgs (System.Collections.Specialized)
NotifyCollectionChangedAction (Microsoft.UI.Xaml.Data) NotifyCollectionChangedAction (System.Collections.Specialized)
DataErrorsChangedEventArgs (Microsoft.UI.Xaml.Data) DataErrorsChangedEventArgs (System.ComponentModel)
INotifyDataErrorInfo (Microsoft.UI.Xaml.Data) INotifyDataErrorInfo (System.ComponentModel)
INotifyPropertyChanged (Microsoft.UI.Xaml.Data) INotifyPropertyChanged (System.ComponentModel)
PropertyChangedEventHandler (Microsoft.UI.Xaml.Data) PropertyChangedEventHandler (System.ComponentModel)
PropertyChangedEventArgs (Microsoft.UI.Xaml.Data) PropertyChangedEventArgs (System.ComponentModel)
ICommand (Microsoft.UI.Xaml.Input) ICommand (System.Windows.Input)
IXamlServiceProvider (Microsoft.UI.Xaml) IServiceProvider (system)

Typy o tej samej nazwie i przestrzeni nazw

Typ Namespace
Cornerradius Microsoft.UI.Xaml
Czas trwania Microsoft.UI.Xaml
Typ czasu trwania Microsoft.UI.Xaml
GridLength Microsoft.UI.Xaml
Typ jednostki siatki Microsoft.UI.Xaml
Grubość Microsoft.UI.Xaml
GeneratorPosition Microsoft.UI.Xaml.Controls.Primitives
Matrix Microsoft.UI.Xaml.Media
Keytime Microsoft.UI.Xaml.Media.Animation
RepeatBehavior Microsoft.UI.Xaml.Media.Animation
TypPowtarzaniaZachowania Microsoft.UI.Xaml.Media.Animation
Matrix3d Microsoft.UI.Xaml.Media.Media3D