Поделиться через


Сопоставление типов .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 3 входит в состав пакета SDK для приложений Windows). Типы WinRT для сопоставлений Windows SDK находятся в пространстве имен Windows.*, а типы WinRT для сопоставлений WinUI 3 — в пространстве имен Microsoft.UI.Xaml.*. Существует две причины для сопоставления пользовательских типов, которые/WinRT C# делает для типов WinRT:

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

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

Примечание.

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

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

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

Тип или пространство имен 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) Значение nullable<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)
Plane (Windows.Foundation.Numerics) Plane (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) Тип (Система)

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

Тип Пространство имен
IPropertyValue Windows.Foundation
IReferenceArray<T> Windows.Foundation
Point Windows.Foundation
Rect Windows.Foundation
Размер Windows.Foundation
Цвет Windows.UI
TypeKind Windows.UI.Xaml.Interop

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

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

Тип или пространство имен WinRT Тип или пространство имен .NET
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)

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

Тип Пространство имен
CornerRadius Microsoft.UI.Xaml
Длительность Microsoft.UI.Xaml
DurationType Microsoft.UI.Xaml
GridLength Microsoft.UI.Xaml
GridUnitType Microsoft.UI.Xaml
Толщина Microsoft.UI.Xaml
Генератор положение Microsoft.UI.Xaml.Controls.Primitives
Матрица Microsoft.UI.Xaml.Media
KeyTime Microsoft.UI.Xaml.Media.Animation
RepeatBehavior Microsoft.UI.Xaml.Media.Animation
RepeatBehaviorType Microsoft.UI.Xaml.Media.Animation
Matrix3D (Microsoft.UI.Xaml.Media.Media3D