Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Réflexion dans le .NET Framework pour les applications Windows Store
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Réflexion dans le .NET Framework pour les applications Windows Store

.NET Framework 4.6 and 4.5

Depuis le .NET Framework 4.5, .NET Framework propose un ensemble de types et de membres de réflexion à utiliser dans les applications Windows Store. Ces types et membres sont disponibles dans .NET Framework complet ainsi que dans .NET pour les applications du Windows Store. Ce document explique les principales différences entre ceux-là et leurs équivalents dans .NET Framework 4 et ses versions antérieures.

Si vous créez une application Windows Store, vous devez utiliser les types et membres de réflexion dans .NET pour les applications du Windows Store. Ces types et membres sont également disponibles, mais ne sont pas obligatoires, pour les applications de bureau, il est donc possible d'utiliser le même code pour les deux types d'applications.

Dans .NET pour les applications du Windows Store, la classe TypeInfo contient certaines fonctionnalités de la classe Type de .NET Framework 4. Un objet Type représente une référence à une définition d'un type, tandis qu'un objet TypeInfo représente la définition de ce type. Cela vous permet de manipuler des objets Type sans que le runtime nécessite forcément de charger l'assembly qu'ils référencent. Obtenir l'objet TypeInfo associé force l'assembly à se charger.

TypeInfo contient bon nombre des membres disponibles sur Type, et de nombreuses propriétés de réflexion de .NET pour les applications du Windows Store retournent des collections d'objets TypeInfo. Pour obtenir un objet TypeInfo à partir d'un objet Type, utilisez la méthode GetTypeInfo.

Dans .NET pour les applications du Windows Store, utilisez les propriétés de réflexion qui retournent des collections d'IEnumerable<T> au lieu de méthodes qui retournent des tableaux. Les contextes de réflexion peuvent implémenter le parcours tardif de ces collections pour de grandes assemblys ou des types.

Les propriétés de réflexion retournent uniquement les méthodes déclarées sur un objet particulier au lieu de parcourir l'arborescence d'héritage. De plus, elles n'utilisent pas de paramètres BindingFlags pour le filtrage. Le filtre a lieu dans le code utilisateur, en utilisant des requêtes LINQ sur les collections retournées. Pour les objets Reflection qui commencent par le runtime (par exemple, suite à typeof(Object)), il est plus efficace de parcourir l'arborescence d'héritage en utilisant des méthodes d'assistance de classe RuntimeReflectionExtensions. Les consommateurs des objets provenant de contextes de réflexion personnalisés ne peuvent pas utiliser ces méthodes, et doivent parcourir l'arborescence d'héritage elles-mêmes.

Dans une application Windows Store, l'accès à certains types et membres de .NET Framework est restreint. Par exemple, vous ne pouvez pas appeler les méthodes .NET Framework qui ne sont pas incluses dans .NET pour les applications du Windows Store, à l'aide d'un objet MethodInfo. En outre, certains types et membres qui ne sont pas considérés comme sécurisés dans le contexte d'une application d'Windows Store sont bloqués, de même qu' Marshal et les membres de WindowsRuntimeMarshal. Cette restriction affecte uniquement les types et les membres de .NET Framework ; vous pouvez appeler votre code ou un code tiers de façon normale.

Cet exemple utilise les types et membres de réflexion dans .NET pour les applications du Windows Store pour récupérer les méthodes et les propriétés du type Calendar, notamment des méthodes et des propriétés héritées. Pour exécuter ce code, collez-le dans le fichier de code d'une page Windows Store qui contient un contrôle nommé Windows.UI.Xaml.Controls.Textblocktextblock1.


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Navigation;
using System.Reflection;
using System.Globalization;
using System.Text;


namespace Reflection
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
           this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            TypeInfo t = typeof(Calendar).GetTypeInfo();
            IEnumerable<PropertyInfo> pList = t.DeclaredProperties;
            IEnumerable<MethodInfo> mList = t.DeclaredMethods;

            StringBuilder sb = new StringBuilder();

            sb.Append("Properties:");
            foreach (PropertyInfo p in pList)
            {

                sb.Append("\n" + p.DeclaringType.Name + ": " + p.Name);
            }
            sb.Append("\nMethods:");
            foreach (MethodInfo m in mList)
            {
                sb.Append("\n" + m.DeclaringType.Name + ": " + m.Name);
            }

            textblock1.Text = sb.ToString();

        }
    }
}


Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft