Not all data types have a built-in ToString method. Moreover, built-in methods can throw an error if, for example, an object is empty, or can only return the type name. This tip shows how to build a universal method (for example in extensions) that recognizes the type of data and converts it into a meaningful text string.
Using the Code
The method can be placed directly in the program class or extension class. Remember to remove the
this declarations if you are using a dynamic class.
public static string AsString(this object oValue, bool ClearlyNamed = false)
if (oValue == null) return ClearlyNamed ? "<null>":"";
if (oValue.GetType() == typeof(string)) return oValue as string;
if (oValue.GetType() == typeof(string)) return string.Join(";",(string)oValue));
In the first line, the method detects if the object is empty and returns an empty string or description.
Then, in subsequent
if blocks, it recognizes what type of data we are trying to present as a
string and converts the data into text. The last line returns a text value if the data is not
null but we cannot (or do not want to) determine its type.
The optional parameter
ClearlyName forces the method not to process an
null value or an unknown type into an empty
string, but a description of what the input is.
It depends on the imagination of the coder whether it introduces the recognition of the next possible types of input data and the ways of processing it into text.
Comments and Explanations
Colleague Phil.o noticed well that the originally used method of merging the text from the array (using
string1 + = string2) is not optimal and
StringBuilder should be used. I corrected the source code as noted, but used a simpler method using
- 28th October, 2021: Initial version