C#/WinRT 中 WinRT 类型的 .NET 映射
本文列出了 C#/WinRT 在面向 .NET 6(或更高版本)的桌面应用中的 Windows 运行时 (WinRT) 类型和 .NET 类型之间产生的映射。 在这些应用中,Visual Studio IntelliSense 显示 .NET 类型而不是 Windows 运行时类型。 例如,如果 Windows 运行时方法采用类型 IVector<string> 的参数,IntelliSense 将显示类型 IList<string> 的参数。 同样,在使用 C#/WinRT 编写的 WinRT 组件中,会在成员签名中使用 .NET 类型。 使用 C#/WinRT 生成 Windows 运行时组件时,.NET 类型将转换为相应的 WinRT 类型。
C#/WinRT 自定义类型映射按 Windows SDK 或 WinUI 3(WinUI 3 是 Windows App SDK 的一部分)中的类型进行分类。 Windows SDK 映射的 WinRT 类型位于 Windows.* 命名空间下,WinUI 3 映射的 WinRT 类型位于 Microsoft.UI.Xaml.* 命名空间下。 C#/WinRT 为 WinRT 类型创建自定义类型映射的原因有两个:
映射到具有不同名称和/或命名空间的 .NET 类型的 WinRT 类型。 这些自定义映射用于将 WinRT 类型映射到现有的 .NET 等效类型。 也有映射到不同类型的情况(例如,值类型映射到类类型)。
映射到具有相同名称和命名空间的 .NET 类型的 WinRT 类型。 这些自定义映射通常用于性能或增强的原因,直接在 C# 中实现。 在 WinRT 和 .NET 中,大多数具有相同的命名空间名称和类型名称的类型都是结构(或者与结构关联的类型,例如枚举)。 在 WinRT 中,结构没有字段以外的成员,并且需要帮助器类型(.NET 会隐藏这些类型)。 这些 .NET 版本的结构具有可提供隐藏帮助程序类型的功能的属性和方法(例如 Windows.UI.Color)。
注意
有关 UWP 应用上下文中 WinRT 和 .NET 类型之间的映射列表,请参阅 UWP 中 WinRT 类型的 .NET 映射。
Windows SDK 中 WinRT 类型的映射
具有不同名称和/或命名空间的类型
WinRT 类型/命名空间 | .NET 类型/命名空间 |
---|---|
DateTime (Windows.Foundation) | DateTimeOffset (System) |
EventHandler<T> (Windows.Foundation) | EventHandler<T> (System) |
EventRegistrationToken (Windows.Foundation) | EventRegistrationToken (WinRT) |
HResult (Windows.Foundation) | Exception (System) |
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) | Type (System) |
具有相同名称和命名空间的类型
类型 | 命名空间 |
---|---|
IPropertyValue | Windows.Foundation |
IReferenceArray<T> | Windows.Foundation |
点 | Windows.Foundation |
Rect | Windows.Foundation |
大小 | Windows.Foundation |
颜色 | Windows.UI |
TypeKind | Windows.UI.Xaml.Interop |
WinUI 中 WinRT 类型的映射
具有不同名称和/或命名空间的类型
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 |
Thickness | 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 |
RepeatBehaviorType | Microsoft.UI.Xaml.Media.Animation |
Matrix3D | (Microsoft.UI.Xaml.Media.Media3D |