Información a nivel de código fuente (atributos Caller)
Use CallerMemberName, CallerFilePath y CallerLineNumber para capturar información del lugar de llamada en logs, validaciones y notificaciones de propiedades.
Información a nivel de código fuente (atributos Caller) es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.
Por qué usar la información del llamador
Objetivo: Capture automáticamente información sobre el punto de llamada.
- CallerMemberName — quién realizó la llamada
- CallerFilePath — qué archivo
- CallerLineNumber — qué línea
- Resulta ideal para registros, guardas y notificaciones
Nombre del miembro para los registros
CallerMemberName completa automáticamente el nombre del método o la propiedad del llamador cuando se omite el argumento.
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
}
}
Información del archivo y la línea
Añada CallerFilePath y CallerLineNumber para obtener diagnósticos precisos.
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();
}
}
Notificaciones de propiedades
Use CallerMemberName en setters o auxiliares de eventos para evitar cadenas codificadas manualmente.
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"
}
}
Guardas con el nombre del llamador
La información del llamador hace que los mensajes de las guardas sean más claros sin usar cadenas manuales.
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);
}
}
}
Consejos y notas
Notas:
- Los atributos del llamador funcionan con parámetros opcionales que tienen valores predeterminados.
- No dependa de rutas de archivo exactas para proteger secretos; las rutas pueden revelar carpetas.
- Resultan ideales para el registro, los diagnósticos y los eventos de cambio de propiedades.
Atributo del nombre del llamador
Resumen
Resumen: Añada CallerMemberName, CallerFilePath y CallerLineNumber a parámetros opcionales para capturar sin coste adicional el contexto del llamador.
Preguntas frecuentes
¿La lección «Información a nivel de código fuente (atributos Caller)» es gratis?
Sí — el texto completo de «Información a nivel de código fuente (atributos Caller)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Información a nivel de código fuente (atributos Caller)»?
Use CallerMemberName, CallerFilePath y CallerLineNumber para capturar información del lugar de llamada en logs, validaciones y notificaciones de propiedades. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Información a nivel de código fuente (atributos Caller)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Type, MethodInfo, activación y atributos personalizados
- Información a nivel de código fuente (atributos Caller)
- Escenarios de metaprogramación ligera