If you want the user to be able to explore the object data:
You can use the ObjectDumper
class that has been known to do that. I've never confirmed, but I've always suspected that the Immediate Window uses that.
From the project site:
ObjectDumper takes a normal .NET object and dumps it to a string, TextWriter, or file. Handy for debugging purposes.
This class library for.NET 3.5 and 4.0 enables you to take an object instance and easily dump its contents to a string, Debug-output, a TextWriter, or to a file. Handy for debugging purposes.
Or do it by yourself:
foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
string name=descriptor.Name;
object value=descriptor.GetValue(obj);
Console.WriteLine("{0}={1}",name,value);
}