Maison >développement back-end >C++ >Comment puis-je enregistrer efficacement des objets complexes en C# pour le débogage ?

Comment puis-je enregistrer efficacement des objets complexes en C# pour le débogage ?

DDD
DDDoriginal
2025-01-06 17:31:49450parcourir

How Can I Effectively Log Complex Objects in C# for Debugging?

Journalisation d'objets complexes en C#

Lors du débogage du code, il est souvent utile d'afficher l'état d'un objet au moment de l'exécution. La fenêtre Immédiat de Visual Studio offre un moyen pratique d'afficher le contenu formaté d'un objet à l'aide de la syntaxe ? objectname.

Pour y parvenir à partir du code à des fins de journalisation, il existe plusieurs approches à considérer :

Sérialisation JSON :

Une méthode efficace pour le dumping de graphiques d'objets volumineux utilise la sérialisation JSON. Cela peut être accompli à l'aide de la bibliothèque Newtonsoft.Json :

using Newtonsoft.Json;

public static class ObjectDumper
{
    public static string Dump(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }
}

Dans la fenêtre d'exécution, vous pouvez ensuite exécuter ce qui suit :

var logEntry = ObjectDumper.Dump(myObj);

Pour visualiser la structure JSON, développez le logEntry valeur dans la fenêtre Locals et sélectionnez l'option "Json visualizer" dans le curseur déroulant à côté de la loupe icon.

Reflection et ToString() :

Une autre approche consiste à utiliser Reflection pour accéder aux propriétés et aux valeurs d'un objet et les convertir manuellement en représentation sous forme de chaîne :

public static string Dump(object obj)
{
    StringBuilder sb = new StringBuilder();
    Type type = obj.GetType();
    PropertyInfo[] properties = type.GetProperties();

    sb.Append("Object of type: " + type.Name + "\n");
    foreach (PropertyInfo property in properties)
    {
        sb.Append(property.Name + ": ");
        sb.Append(property.GetValue(obj)?.ToString() ?? "null");
        sb.Append("\n");
    }

    return sb.ToString();
}

Autre Options :

  • Log4Net : Une bibliothèque de journalisation populaire qui prend en charge la sérialisation d'objets personnalisés.
  • Serilog : Une autre bibliothèque de journalisation qui offre une large gamme d'options de sérialisation.
  • Formatage personnalisé : Mise en œuvre une méthode ToString() personnalisée sur l'objet pour contrôler le format dans lequel il est enregistré.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn