You could create a reusable component that takes any kind of object, iterates over all the properties of that object, and displays the name of the property and its value to the user.
At runtime the executing code doesn't care about what your objects property names are. It is of no use to the executing code. With reflection, at runtime you can get those names and the properties values by name.