Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

A ToString Replacement that Recognizes Different Data Types

2.00/5 (4 votes)
28 Oct 2021CPOL1 min read 6.2K  
Most data types have a built-in ToString method, but not all, and what's more, the default method can throw an error if, for example, the object is null.
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 static and this declarations if you are using a dynamic class.

C#
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));

//...
//Recognition and processing of other types of data
//...

    return ClearlyNamed?("<"+oValue.getType().Name+">"):"";
}

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 string.Join.

History

  • 28th October, 2021: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)