Condividi tramite


Mapping .NET dei tipi WinRT in C#/WinRT

Questo articolo riporta i mapping che C#/WinRT crea tra i tipi Windows Runtime (WinRT) e i tipi .NET nelle app desktop destinate a .NET 6 (o versione successiva). In queste app, Visual Studio IntelliSense mostra il tipo .NET anziché il tipo Windows Runtime. Ad esempio, se un metodo Windows Runtime accetta un parametro di tipo IVector<stringa>, IntelliSense mostra un parametro di tipo IList<stringa>. Analogamente, in un componente WinRT creato con C#/WinRT, si usa il tipo .NET nelle firme dei membri. Quando si usa C#/WinRT per generare un componente Windows Runtime, il tipo .NET viene convertito nel tipo WinRT corrispondente.

I mapping dei tipi personalizzati C#/WinRT sono classificati in base ai tipi in Windows SDK o in WinUI 3 (WinUI 3 fa parte di SDK per app di Windows). I tipi WinRT per i mapping di Windows SDK sono disponibili negli spazi dei nomi Windows.* e i tipi WinRT per i mapping WinUI 3 sono disponibili negli spazi dei nomi Microsoft.UI.Xaml.*. Esistono due motivi per i mapping dei tipi personalizzati creati da C#/WinRT per i tipi WinRT:

  • Tipi di WinRT di cui viene eseguito il mapping a tipi di .NET con un nome e/o uno spazio dei nomi diverso. Questi mapping personalizzati riguardano il mapping dei tipi WinRT ai tipi equivalenti .NET esistenti. Esistono anche casi in cui il mapping viene eseguito a un tipo diverso, ad esempio un tipo valore è mappato a un tipo di classe.

  • Tipi di WinRT di cui viene eseguito il mapping a tipi di .NET con lo stesso nome e spazio dei nomi. Questi mapping personalizzati sono in genere per motivi di prestazioni o miglioramento e vengono implementati direttamente in C#. La maggior parte dei tipi con lo stesso nome di spazio dei nomi e di tipo in WinRT e .NET sono strutture oppure o tipi associati a strutture, come le enumerazioni. In WinRT, le strutture non hanno altri membri oltre i campi e richiedono tipi di helper che .NET nasconde. Le versioni di .NET di queste strutture hanno proprietà e metodi che forniscono le funzionalità dei tipi di helper nascosti (ad esempio Windows.UI.Color).

Nota

Per un elenco dei mapping tra tipi WinRT e .NET nel contesto delle app UWP, vedere mapping .NET dei tipi WinRT in UWP.

Mapping per i tipi WinRT in Windows SDK

Tipi con un nome e/o uno spazio dei nomi diversi

Tipo/spazio dei nomi di WinRT Tipo/spazio dei nomi di .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)

Tipi con lo stesso nome e lo stesso spazio dei nomi

Tipo Spazio dei nomi
IPropertyValue Windows.Foundation
IReferenceArray<T> Windows.Foundation
Point Windows.Foundation
Rect Windows.Foundation
Dimensione Windows.Foundation
Color Windows.UI
TypeKind Windows.UI.Xaml.Interop

Mappings for WinRT types in WinUI

Tipi con un nome e/o uno spazio dei nomi diversi

Tipo/spazio dei nomi di WinRT Tipo/spazio dei nomi di .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)

Tipi con lo stesso nome e lo stesso spazio dei nomi

Tipo Spazio dei nomi
CornerRadius Microsoft.UI.Xaml
Durata 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
Con matrice 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