0Pricing
C# Academy · Leçon

Type, MethodInfo, activation et attributs personnalisés

Obtenez des objets Type, localisez MethodInfo, appelez des méthodes, créez des instances avec Activator et définissez ou lisez des attributs personnalisés.

Type, MethodInfo, activation et attributs personnalisés est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Vue d’ensemble

Objectif : utiliser la réflexion en toute sécurité.

  • Obtenir le Type
  • Trouver le MethodInfo
  • Créer une instance avec Activator
  • Définir et lire des attributs

Obtenir le Type

Obtenez le Type avec typeof, à partir d’une instance avec GetType(), ou par nom avec Type.GetType.

using System;

public class Sample { }

public class Program
{
  public static void Main(string[] args)
  {
    // 1) From a compile-time type
    Type t1 = typeof(Sample);

    // 2) From an instance
    Sample s = new Sample();
    Type t2 = s.GetType();

    // 3) From a full name (needs assembly-qualified name for external types)
    Type t3 = Type.GetType("System.String");

    Console.WriteLine(t1.Name + ", " + t2.FullName + ", " + (t3 == null ? "null" : t3.Name));
  }
}

MethodInfo.Invoke

Utilisez GetMethod pour localiser une méthode et Invoke pour l’appeler. Transmettez l’instance et un tableau d’arguments.

using System;
using System.Reflection;

public class Greeter
{
  public string Hello(string name) { return "Hello, " + name; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Greeter g = new Greeter();
    Type t = typeof(Greeter);

    MethodInfo mi = t.GetMethod("Hello"); // public instance method
    object result = mi.Invoke(g, new object[] { "Ada" }); // call dynamically

    Console.WriteLine(result); // Hello, Ada
  }
}

Notions de base d’Activator

Activator.CreateInstance(Type) construit un objet à l’aide du constructeur public sans paramètre.

using System;

public class Person
{
  public string Name { get; set; }
  public Person() { Name = "Unknown"; } // parameterless ctor
}

public class Program
{
  public static void Main(string[] args)
  {
    Type tp = typeof(Person);
    object o = Activator.CreateInstance(tp); // uses public parameterless ctor
    Person p = (Person)o;
    p.Name = "Alan";
    Console.WriteLine("Created: " + p.Name);
  }
}

Attributs personnalisés

Créez une petite classe Attribute et récupérez-la via GetCustomAttributes sur le type ou la méthode.

using System;
using System.Reflection;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class LabelAttribute : Attribute
{
  public string Text { get; private set; }
  public LabelAttribute(string text) { Text = text; }
}

[Label("Utility class")]
public class Utils
{
  [Label("Adds two ints")]
  public static int Add(int a, int b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Type t = typeof(Utils);

    // Read class attribute
    object[] classAttrs = t.GetCustomAttributes(typeof(LabelAttribute), false);
    if (classAttrs.Length > 0)
      Console.WriteLine("Class label: " + ((LabelAttribute)classAttrs[0]).Text);

    // Read method attribute
    MethodInfo mi = t.GetMethod("Add");
    object[] methodAttrs = mi.GetCustomAttributes(typeof(LabelAttribute), false);
    if (methodAttrs.Length > 0)
      Console.WriteLine("Method label: " + ((LabelAttribute)methodAttrs[0]).Text);
  }
}

Conseils et précautions

Conseils :

  • Vérifiez que null n’est pas renvoyé par Type.GetType et contrôlez l’absence de membres.
  • Préférez typeof lorsque c’est possible (plus rapide et plus sûr).
  • Centralisez l’utilisation de la réflexion et documentez-la soigneusement.
  • Utilisez BindingFlags pour rechercher des membres non publics ou statiques.

Notions de base de l’activation

Vérification rapide : quelle API crée une instance à partir d’un Type doté d’un constructeur public sans paramètre ?

Récapitulatif

Récapitulatif : obtenez un Type, trouvez un MethodInfo, créez une instance avec Activator et lisez les attributs à l’aide de GetCustomAttributes.

Questions Fréquemment Posées

La leçon « Type, MethodInfo, activation et attributs personnalisés » est-elle gratuite ?

Oui — le texte complet de « Type, MethodInfo, activation et attributs personnalisés » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Type, MethodInfo, activation et attributs personnalisés » ?

Obtenez des objets Type, localisez MethodInfo, appelez des méthodes, créez des instances avec Activator et définissez ou lisez des attributs personnalisés. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.

Combien de temps prend la leçon « Type, MethodInfo, activation et attributs personnalisés » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Type, MethodInfo, activation et attributs personnalisés
  2. Informations au niveau du code source (attributs Caller)
  3. Scénarios simples de métaprogrammation
← Retour à C# Academy