0Pricing
C# Academy · Leçon

Informations au niveau du code source (attributs Caller)

Utilisez CallerMemberName, CallerFilePath et CallerLineNumber pour capturer les informations du site d’appel dans les journaux, les contrôles et les notifications de propriétés.

Informations au niveau du code source (attributs Caller) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Pourquoi les informations sur l’appelant

Objectif : capturer automatiquement les informations du site d’appel.

  • CallerMemberName — qui a appelé
  • CallerFilePath — quel fichier
  • CallerLineNumber — quelle ligne
  • Très utile pour les journaux, les mécanismes de protection et les notifications

Nom du membre pour les journaux

CallerMemberName renseigne automatiquement le nom de la méthode ou de la propriété de l’appelant lorsque l’argument est omis.

using System;
using System.Runtime.CompilerServices;

public static class Log
{
  // Caller fills "member" automatically if not provided
  public static void Info(string msg, [CallerMemberName] string member = null)
  {
    Console.WriteLine("[" + (member ?? "?") + "] " + msg);
  }
}

public class Program
{
  static void DoWork() { Log.Info("started"); }

  public static void Main(string[] args)
  {
    Log.Info("app boot");
    DoWork(); // prints caller method name
  }
}

Informations sur le fichier et la ligne

Ajoutez CallerFilePath et CallerLineNumber pour obtenir des informations de diagnostic précises.

using System;
using System.Runtime.CompilerServices;

public static class Diag
{
  public static void Trace(string msg,
    [CallerFilePath] string file = null,
    [CallerLineNumber] int line = 0,
    [CallerMemberName] string member = null)
  {
    Console.WriteLine(file + ":" + line + " in " + member + " -> " + msg);
  }
}

public class Program
{
  static void Step() { Diag.Trace("stepping"); }

  public static void Main(string[] args)
  {
    Diag.Trace("start");
    Step();
  }
}

Notifications de propriétés

Utilisez CallerMemberName dans les accesseurs ou les gestionnaires d’événements pour éviter les chaînes écrites en dur.

using System;
using System.Runtime.CompilerServices;

public class Person
{
  private string _name;

  // Notify helper uses CallerMemberName so callers need not pass the property name
  void Notify([CallerMemberName] string property = null)
  {
    Console.WriteLine("Changed: " + property);
  }

  public string Name
  {
    get { return _name; }
    set { _name = value; Notify(); } // property name auto-filled
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Person p = new Person();
    p.Name = "Ada"; // prints "Changed: Name"
  }
}

Mécanismes de protection avec le nom de l’appelant

Les informations sur l’appelant rendent les messages de protection plus clairs, sans chaînes écrites manuellement.

using System;
using System.Runtime.CompilerServices;

public static class Guard
{
  public static void NotNull(object x, [CallerMemberName] string caller = null)
  {
    if (x == null) throw new ArgumentNullException("value", "Null passed by " + (caller ?? "?"));
  }
}

public class Program
{
  static void Save(string path)
  {
    Guard.NotNull(path); // if null, message includes "Save"
    Console.WriteLine("Saving to " + path);
  }

  public static void Main(string[] args)
  {
    try
    {
      Save(null);
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
  }
}

Conseils et remarques

Remarques :

  • Les attributs de l’appelant fonctionnent avec des paramètres facultatifs qui possèdent des valeurs par défaut.
  • Ne vous fiez pas aux chemins de fichiers exacts pour les secrets : les chemins peuvent révéler des dossiers.
  • Très utile pour la journalisation, les diagnostics et les événements de modification des propriétés.

Attribut du nom de l’appelant

Vérification rapide : quel attribut permet à une méthode d’obtenir le nom de son appelant comme valeur de paramètre par défaut ?

Récapitulatif

Récapitulatif : ajoutez CallerMemberName, CallerFilePath et CallerLineNumber aux paramètres facultatifs pour capturer gratuitement le contexte de l’appelant.

Questions Fréquemment Posées

La leçon « Informations au niveau du code source (attributs Caller) » est-elle gratuite ?

Oui — le texte complet de « Informations au niveau du code source (attributs Caller) » 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 « Informations au niveau du code source (attributs Caller) » ?

Utilisez CallerMemberName, CallerFilePath et CallerLineNumber pour capturer les informations du site d’appel dans les journaux, les contrôles et les notifications de propriété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 2 sur 3.

Combien de temps prend la leçon « Informations au niveau du code source (attributs Caller) » ?

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