Asignaciones de .NET de tipo WinRT en C#/WinRT
En este artículo se enumeran las asignaciones que C#/WinRT realiza entre los tipos de Windows Runtime (WinRT) y los de .NET en aplicaciones de escritorio destinadas a .NET 6 (o posterior). En estas aplicaciones, Visual Studio IntelliSense muestra el tipo de .NET en lugar del tipo Windows Runtime. Por ejemplo, si un método de Windows Runtime toma un parámetro de tipo IVector<string>, IntelliSense muestra un parámetro de tipo IList<string>. De forma similar, en un componente de WinRT que se ha escrito con C#/WinRT, se usa el tipo de .NET en las firmas de miembro. Cuando se usa C#/WinRT para generar un componente de Windows Runtime, el tipo de .NET se traduce al tipo de WinRT correspondiente.
Las asignaciones de tipos personalizados de C#/WinRT se clasifican por tipos en el SDK de Windows o en WinUI 3 (WinUI 3 forma parte del SDK de Aplicaciones para Windows). Los tipos de WinRT para las asignaciones de Windows SDK se encuentran en los espacios de nombres Windows.*, y los tipos de WinRT para las asignaciones de WinUI 3 se encuentran en los espacios de nombres Microsoft.UI.Xaml.*. Hay dos motivos para las asignaciones de tipos personalizados que C#/WinRT realiza para los tipos de WinRT:
Tipos de WinRT que se asignan a tipos de .NET con un nombre o espacio de nombres diferente. Estas asignaciones personalizadas son para asignar tipos de WinRT a tipos equivalentes de .NET existentes. También hay casos en los que la asignación es a un tipo diferente (por ejemplo, un tipo de valor se asigna a un tipo de clase).
Tipos de WinRT que se asignan a tipos de .NET con un nombre y espacio de nombres similares. Estas asignaciones personalizadas suelen ser por motivos de rendimiento o mejora, y se implementan directamente en C#. La mayoría de los tipos que tienen el mismo nombre de espacio de nombres y el mismo nombre de tipo en WinRT y .NET son estructuras (o tipos asociados con estructuras, como enumeraciones). En WinRT, las estructuras no tienen miembros que no sean campos y requieren tipos de asistentes, que .NET oculta. Las versiones de .NET Framework de estas estructuras tienen propiedades y métodos que proporcionan la funcionalidad de los tipos de ayuda escondida. (por ejemplo, Windows.UI.Color).
Nota:
Para obtener una lista de asignaciones entre los tipos de WinRT y .NET en el contexto de las aplicaciones para UWP, consulte Asignaciones de .NET para tipos de WinRT en UWP.
Asignaciones para tipos de WinRT en Windows SDK
Tipos con un nombre o un espacio de nombres diferentes
Tipo o espacio de nombres de WinRT | Tipo o espacio de nombres de .NET |
---|---|
DateTime (Windows.Foundation) | DateTimeOffset (Sistema) |
EventHandler<T> (Windows.Foundation) | EventHandler<T> (Sistema) |
EventRegistrationToken (Windows.Foundation) | EventRegistrationToken (WinRT) |
HResult (Windows.Foundation) | Exception (Sistema) |
IClosable (Windows.Foundation) | IDisposable (Sistema) |
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) |
Tipos con el mismo nombre y espacio de nombres
Tipo | Espacio de nombres |
---|---|
IPropertyValue | Windows.Foundation |
IReferenceArray<T> | Windows.Foundation |
Punto | Windows.Foundation |
Rect | Windows.Foundation |
Size | Windows.Foundation |
Color | Windows.UI |
TypeKind | Windows.UI.Xaml.Interop |
Asignaciones para tipos de WinRT en WinUI
Tipos con un nombre o un espacio de nombres diferentes
Tipo o espacio de nombres de WinRT | Tipo o espacio de nombres de .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) |
Tipos con el mismo nombre y espacio de nombres
Tipo | Espacio de nombres |
---|---|
CornerRadius | Microsoft.UI.Xaml |
Duración | 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 |
Matriz | 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 |