Domanda Come si usa il metodo di estensione LINQPad Dump () in Visual Studio? [chiuso]


LINQPad è sorprendente e particolarmente utile Dump() metodi di estensione che rendono oggetti e strutture di quasi tutti i tipi, anonimi o non, alla console.

Inizialmente, quando mi sono trasferito in Visual Studio 2010, ho provato a creare il mio Dump metodo che usa un delegato per ottenere i valori da renderizzare per i tipi anonimi, ecc. Tuttavia sta diventando piuttosto complicato e, mentre all'inizio era divertente ed educativo, ho bisogno di una solida implementazione. Dopo aver verificato il codice LINQPad in .NET Reflector Sono ancora più sicuro che non avrò l'implementazione giusta.

C'è una libreria gratuita che posso includere per fornire il Dump funzionalità?


44
2018-04-23 14:47


origine


risposte:


Guarda qui (il tuo percorso può variare):

C: \ Programmi (x86) \ Microsoft Visual Studio 10.0 \ Samples \ 1033 \ CSharpSamples.zip \ LinqSamples \ ObjectDumper


34
2018-04-23 14:49



Ho scritto un metodo di estensione su Object che utilizza il serializzatore Json.Net con l'opzione pretty format. JSON è abbastanza facile da leggere quando formattato in questo modo. Ti mancano le informazioni sul tipo, ma non so che ne hai bisogno, soprattutto considerando quanto sia facile. Non mi ha ancora deluso. Uso Json.Net e non MS 'perché ha la capacità di gestire riferimenti circolari in grafici complessi, dove MS' non può, o non ha fatto al momento in cui ci ho pensato.

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

48
2018-04-23 15:28



diceguyd30'S risposta proviene da una discussione (specialmente i commenti di Pat Kujawa e di Anunay) e descrive come chiamare l'implementazione del dump di LINQPad da C # e 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;
}

9
2018-02-24 20:59



C'è anche una libreria di classi chiamata ObjectDumper disponibile come pacchetto NuGet.


9
2018-02-03 09:02