.NET сопоставления типов WinRT в C#/WinRT

В этой статье перечислены сопоставления, которые C#/WinRT выполняет между типами среда выполнения Windows (WinRT) и типами .NET в классических приложениях, предназначенных для .NET 6 (или более поздних версий). В этих приложениях Visual Studio IntelliSense отображает тип .NET вместо типа среда выполнения Windows. Например, если метод среда выполнения Windows принимает параметр типа IVector<string> затем IntelliSense отображает параметр типа IList<string>. Аналогичным образом, в компоненте WinRT, создаваемом с помощью C#/WinRT, используется тип .NET в подписях членов. При использовании C#/WinRT для создания компонента среда выполнения Windows тип .NET преобразуется в соответствующий тип WinRT.

Сопоставления пользовательских типов C#/WinRT классифицируются по типам, находящимся в Windows SDK или в WinUI 3 (WinUI является частью Windows App SDK). Типы WinRT для сопоставлений пакетов SDK Windows находятся в пространствах имен Windows.*, а типы WinRT для сопоставлений WinUI находятся в пространствах имен Майкрософт.UI.Xaml.*. Существует две причины для сопоставлений пользовательских типов, которые выполняет C#/WinRT для типов WinRT.

  • Типы WinRT, сопоставленные с типами .NET с другим именем и (или) пространством имен. Эти пользовательские сопоставления предназначены для сопоставления типов WinRT с существующими .NET эквивалентными типами. Существуют также случаи, когда сопоставление относится к другому типу (например, тип значения сопоставляется с типом класса).

  • Типы WinRT, которые сопоставляются с типами .NET с одинаковыми именами и находятся в одном пространстве имен. Эти пользовательские сопоставления обычно используются для повышения производительности или оптимизации и реализуются непосредственно на C#. Большинство типов с одинаковым именем пространства имен и именем типа в WinRT и .NET являются структурами (или типами, связанными со структурами, такими как перечисления). В WinRT структуры не содержат других членов, кроме полей, и им требуются вспомогательные типы, которые .NET скрывает. В версиях .NET этих структур присутствуют свойства и методы, которые обеспечивают функциональность скрытых вспомогательных типов (например, Windows.UI.Color).

Замечание

Список сопоставлений между типами WinRT и .NET в контексте приложений UWP см. в разделе .NET сопоставления типов среда выполнения Windows.

Сопоставления типов WinRT в пакете SDK Windows

Типы с другим именем и (или) пространством имен

Тип и пространство имен WinRT .NET тип и пространство имен
DateTime (Windows.Foundation) DateTimeOffset (System)
EventHandler<T> (Windows.Foundation) EventHandler<T> (System)
EventRegistrationToken (Windows.Foundation) EventRegistrationToken (WinRT)
HResult (Windows.Foundation) Исключение (система)
IClosable (Windows.Foundation) IDisposable (System)
IReference<T> (Windows.Foundation) Допускающий значение null<T> (System)
TimeSpan (Windows.Foundation) TimeSpan (System)
Uri (Windows.Foundation) 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)
Matrix3x2 (Windows. Foundation.Numerics) Matrix3x2 (System.Numerics)
Matrix4x4 (Windows. Foundation.Numerics) Matrix4x4 (System.Numerics)
Плоскость (Windows. Foundation.Numerics) Плоскость (System.Numerics)
Кватернион (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) Тип (Система)

Типы с одинаковым именем и пространством имен

Тип Namespace
IPropertyValue Windows.Foundation
IReferenceArray<T> Windows.Foundation
Точка Windows.Foundation
Rect Windows.Foundation
Size Windows.Foundation
Цвет Windows.UI (пользовательский интерфейс)
TypeKind Windows.UI.Xaml.Interop

Сопоставления типов WinRT в WinUI

Типы с другим именем и (или) пространством имен

Тип и пространство имен WinRT .NET тип и пространство имен
INotifyCollectionChanged (Майкрософт.UI.Xaml.Data) INotifyCollectionChanged (System.Collections.Specialized)
NotifyCollectionChangedEventHandler (Майкрософт.UI.Xaml.Data) NotifyCollectionChangedEventHandler (System.Collections.Specialized)
NotifyCollectionChangedEventArgs (Майкрософт. Пользовательского интерфейса. Xaml.Data) NotifyCollectionChangedEventArgs (System.Collections.Specialized)
NotifyCollectionChangedAction (Майкрософт.UI.Xaml.Data) NotifyCollectionChangedAction (System.Collections.Specialized)
DataErrorsChangedEventArgs (Майкрософт.UI.Xaml.Data) DataErrorsChangedEventArgs (System.ComponentModel)
INotifyDataErrorInfo (Майкрософт.UI.Xaml.Data) INotifyDataErrorInfo (System.ComponentModel)
INotifyPropertyChanged (Майкрософт.UI.Xaml.Data) INotifyPropertyChanged (System.ComponentModel)
PropertyChangedEventHandler (Майкрософт.UI.Xaml.Data) PropertyChangedEventHandler (System.ComponentModel)
PropertyChangedEventArgs (Майкрософт.UI.Xaml.Data) PropertyChangedEventArgs (System.ComponentModel)
ICommand (Майкрософт.UI.Xaml.Input) ICommand (System.Windows.Input)
IXamlServiceProvider (Майкрософт.UI.Xaml) IServiceProvider (System)

Типы с одинаковым именем и пространством имен

Тип Namespace
CornerRadius Майкрософт.UI.Xaml
Продолжительность Майкрософт.UI.Xaml
ТипДлительности Майкрософт.UI.Xaml
GridLength Майкрософт.UI.Xaml
ТипЕдиницыСетки Майкрософт.UI.Xaml
Толщина Майкрософт.UI.Xaml
ПозицияГенератора Майкрософт.UI.Xaml.Controls.Primitives
«Матрица» Майкрософт.UI.Xaml.Media
Keytime Майкрософт.UI.Xaml.Media.Animation
Повторение поведения Майкрософт.UI.Xaml.Media.Animation
ТипПовторения Майкрософт.UI.Xaml.Media.Animation
Matrix3d Майкрософт.UI.Xaml.Media.Media3D