web-dev-qa-db-fra.com

Comment utiliser la méthode d'extension LINQPad Dump () dans Visual Studio?

LINQPad est incroyable et particulièrement utile les méthodes d'extension Dump() qui rendent des objets et des structures de presque n'importe quel type, anonymes ou non, sur la console.

Au début, lorsque je suis passé à Visual Studio 2010, j'ai essayé de créer ma propre méthode Dump en utilisant un délégué pour obtenir les valeurs à restituer pour les types anonymes, etc. au début, j'ai besoin d'une implémentation solide. Après avoir vérifié le code LINQPad dans . NET Reflector je suis encore plus assuré que je ne vais pas obtenir la bonne implémentation.

Existe-t-il une bibliothèque gratuite que je peux inclure pour fournir la fonctionnalité Dump?

52
gav

Regardez ici (votre chemin peut varier):

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Samples\1033\CSharpSamples.Zip\LinqSamples\ObjectDumper

34
Raj Kaimal

J'ai écrit une méthode d'extension à Object qui utilise le sérialiseur Json.Net avec la jolie option de format. JSON est assez facile à lire lorsqu'il est formaté comme ça. Vous manquez les informations de type, mais je ne sais pas si vous en avez besoin, surtout compte tenu de la facilité. Ne m'a pas encore échoué. J'utilise Json.Net et non MS 'car il a la capacité de gérer des références circulaires dans des graphiques complexes, où MS' ne pouvait pas, ou ne le faisait pas au moment où j'y pensais.

    using Newtonsoft.Json;
    public static class Dumper{
        public static string ToPrettyString(this object value)
        {
             return JsonConvert.SerializeObject(value, Formatting.Indented);
        }
    }
51
Chad Ruppert

diceguyd 's answer provient de ne discussion (en particulier les commentaires de Pat Kujawa et anunay ) et décrit comment appeler l'implémentation de vidage LINQPad à partir des deux C # et VB.NET:

public static string DumpToHtmlString<T>(this T objectToSerialize)
{
    string strHTML = "";
    try
    {
        var writer = LINQPad.Util.CreateXhtmlWriter(true);
        writer.Write(objectToSerialize);
        strHTML = writer.ToString();
    }
    catch (Exception exc)
    {
        Debug.Assert(false, "Investigate why ?" + exc);
    }
    return strHTML;
}
11
Michael Freidgeim

Il y a aussi ne bibliothèque de classes nommée ObjectDumper disponible en tant que package NuGet.

10
Carl Tonander