c# - licence - linqpad examples
¿Cómo uso el método de extensión LINQPad Dump() en Visual Studio? (4)
Escribí un método de extensión para Object que usa el serializador Json.Net con la opción de formato bonito. JSON es bastante fácil de leer cuando se formatea de esa manera. Extrañas la información del tipo, pero no sé si lo necesitas, especialmente teniendo en cuenta lo fácil que es esto. No me ha fallado todavía Uso Json.Net y no MS porque tiene la capacidad de manejar referencias circulares en gráficos complejos, donde MS no puede, o no lo hizo en el momento en que lo pensé.
using Newtonsoft.Json;
public static class Dumper{
public static string ToPrettyString(this object value)
{
return JsonConvert.SerializeObject(value, Formatting.Indented);
}
}
LINQPad es sorprendente, y particularmente útil es el método de extensión Dump()
que representa objetos y estructuras de casi cualquier tipo, anónimo o no, para la consola.
Inicialmente, cuando me mudé a Visual Studio 2010, traté de crear mi propio método de Dump
utilizando un delegado para obtener los valores para procesar para tipos anónimos, etc. Sin embargo, se está volviendo bastante complicado y aunque fue divertido y educativo al principio, necesito una implementación sólida. Después de haber comprobado el código LINQPad en .NET Reflector , estoy aún más seguro de que no voy a lograr la implementación correcta.
¿Existe una biblioteca gratuita que pueda incluir para proporcionar la funcionalidad de Dump
?
La answer diceguyd30 proviene de una discusión (especialmente los comentarios de Pat Kujawa y de un anuncio ) y describe cómo llamar a la implementación del volcado de LINQPad desde C # y 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;
}
Mira aquí (tu camino puede variar):
C: / Archivos de programa (x86) / Microsoft Visual Studio 10.0 / Samples / 1033 / CSharpSamples.zip / LinqSamples / ObjectDumper
También hay una biblioteca de clases llamada ObjectDumper disponible como paquete NuGet.