Domanda

Ricordo di aver visto qualche tempo fa che forse esisteva qualche metodo nello spazio dei nomi Reflection che verrebbe eseguito in modo ricorsivo ToString() su tutte le proprietà di un oggetto e formattarlo correttamente per la visualizzazione.

Sì, so che tutto ciò che potrei desiderare sarà accessibile tramite il debugger, ma mi chiedo se qualcuno conosce quel comando?

È stato utile?

Soluzione

Penso che quello che stai cercando sia/era chiamato ObjectDumper.Utilizza la riflessione per scorrere e restituire tutte le diverse proprietà di un oggetto.Ne ho sentito parlare per la prima volta mentre imparavo LINQ e la maggior parte degli esempi nel libro Linq in Action lo utilizza.

Sembra che Microsoft non lo abbia incluso nella versione finale di Linq, ma il codice è ancora in circolazione.Ho fatto una rapida ricerca su Google ed ecco il link:

Codice sorgente ObjectDumper

Altri suggerimenti

Il codice di esempio per eseguire il dump di un oggetto e delle sue proprietà può essere trovato qui:

http://www.developer.com/net/csharp/article.php/3713886

Puoi scriverlo da solo.Ad esempio, serializzalo in json utilizzando la libreria JSON.net di Newtonsoft e scrivi quel json sulla console.Ecco un esempio:

using Newtonsoft.Json;

static class Pretty
{
    public static void Print<T> (T x)
    {
        string json = JsonConvert.SerializeObject(x, Formatting.Indented);
        Console.WriteLine(json);
    }
}

Utilizzo:

Pretty.Print(whatever);

Potrei certamente vedere l'uso in una cosa del genere, ma in .Net non otterrai principalmente solo un elenco di nomi di tipi (String, Array, ecc.)?La maggior parte dei built-in non hanno sovraccarichi ToString() "utili" pre-scritti, vero?

Ecco un collegamento con il dumper del codice e un progetto demo che mostra come utilizzarlo. Scaricalo qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top