public static object ProcessComValue(object value)
{
// flatten any multi-dimensional array.
Array array = value as Array;
if (array != null)
{
if (array.Rank > 1)
{
value = array = Utils.FlattenArray(array);
}
// convert array of decimal to strings.
if (array != null && array.GetType().GetElementType() == typeof(decimal))
{
string[] clone = new string[array.Length];
for (int ii = 0; ii < array.Length; ii++)
{
clone[ii] = Convert.ToString(array.GetValue(ii));
}
value = clone;
}
}
// convert scalar decimal to a string.
if (value is decimal)
{
value = Convert.ToString(value);
}
// convert scalar DBNull to a null.
if (value is DBNull)
{
value = null;
}
return value;
}