Jak używać metody rozszerzenia Dump () LINQPad w Visual Studio? [zamknięte]

LINQPad jest niesamowity, a szczególnie przydatne są metody rozszerzenia Dump(), które renderują obiekty i struktury prawie każdego typu, anonimowe lub nie, do konsoli.

Początkowo, kiedy przeniosłem się do Visual Studio 2010, próbowałem stworzyć własną metodę Dump używając delegata, aby uzyskać wartości do renderowania dla anonimowych typów itp. Robi się to dość skomplikowane i chociaż na początku było zabawne i edukacyjne, potrzebuję solidnej implementacji. Po sprawdzeniu kodu LINQPad w . NET Reflector jestem jeszcze bardziej pewny, że nie poprawię implementacji.

Czy istnieje darmowa biblioteka, którą mogę dołączyć, aby zapewnić funkcjonalność Dump?

 46
Author: Peter Mortensen, 2010-04-23

4 answers

Spójrz tutaj (twoja ścieżka może się różnić):

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

 34
Author: Raj Kaimal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-23 14:49:57

Napisałem metodę rozszerzenia do obiektu, która używa Json.Net serializer z opcją ładny format. JSON jest wystarczająco łatwy do odczytania po sformatowaniu w ten sposób. Brakuje Ci informacji typu, ale nie wiem, czy tego potrzebujesz, zwłaszcza biorąc pod uwagę, jak łatwe to jest. Jeszcze mnie nie zawiódł. Używam Json.Net a nie MS', ponieważ ma możliwość obsługi odniesień kołowych w złożonych wykresach, gdzie MS ' nie może, lub nie w tym czasie myślałem o tym.

    using Newtonsoft.Json;
    public static class Dumper{
        public static string ToPrettyString(this object value)
        {
             return JsonConvert.SerializeObject(value, Formatting.Indented);
        }
    }
 49
Author: Chad Ruppert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-23 15:28:34

Diceguyd30 'S answer pochodzi z dyskusji (szczególnie Pat Kujawa & anunay' s comments) i opisuje jak wywołać implementację zrzutu Linqpada zarówno z C#, jak i 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
Author: Michael Freidgeim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 09:39:01

Istnieje również Biblioteka klas o nazwie ObjectDumper dostępna jako pakiet NuGet.

 9
Author: Carl Tonander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-02 22:25:48