65.9K
CodeProject is changing. Read more.
Home

A ToString Replacement that Recognizes Different Data Types

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (4 votes)

Oct 28, 2021

CPOL

1 min read

viewsIcon

6220

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.

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.

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