Project Description

The name of the project says it pretty much all: to have an easy to integrate and easy to use component which dumps the value of a .NET object in a text form. This is very helpful for debugging and logging.

Features

Here is more detailed list of implemented features:

  • The dump output is separated from the targeted dump media by the familiar TextWriter interface.
  • The programmer can dump the value of any type of object: primitive and enum types (including those marked with FlagsAttribute), custom classes, struct-s, collections, etc.
  • For complex type objects the dumper outputs the names and the values of the properties.
  • The dump is recursive: the complex members of the dumped object are dumped indented.
  • Dumps the elements of sequences (arrays, lists, dictionaries, etc.)
  • Handles circular references.
  • The developers can easily customize various aspects of the dump by using an attribute (DumpAttribute) on the classes and their members, such as:
    • the order in which the properties are dumped;
    • formatting of the property names and/or values;
    • suppressing the dump of some uninteresting properties;
    • masking the values of sensitive (e.g. PII) properties;
    • the depth of the recursion into complex members;
    • the maximum number of dumped elements of sequence properties.
  • The dumper picks the customization attributes also from buddy classes declared with MetadataTypeAttribute.
  • Even if the class doesn't have any attributes, the programmer can still pass a metadata class as a separate parameter to the dumping method. This allows for nice control over the dump of BCL and third party classes.

Implementation

As you might have guessed it the dumper is an exercise on .NET reflection. Nothing too fancy or glamorous there.

Usage

The dumper is implemented by the class ObjectTextDumper in the namespace vm.Aspects.Diagnostics. Please visit the Documentation tab to see how to use this component and how to customize your dumps.

Last edited Oct 20, 2013 at 6:03 PM by VMelamed, version 22