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.
Here is more detailed list of implemented features:
- The dump output is separated from the targeted dump media by the familiar
- 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 and possibly fields.
- 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 metadata type classes (buddy classes) declared with
- 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.
As you might have guessed it the dumper is an exercise on .NET reflection. Nothing too fancy or glamorous there.
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.