private static object ToString(object value, BuiltInType sourceType)
{
// check for array conversions.
Array array = value as Array;
if (array != null)
{
String[] output = new String[array.Length];
for (int ii = 0; ii < array.Length; ii++)
{
output[ii] = (String)Cast(array.GetValue(ii), BuiltInType.String);
}
return output;
}
// handle for supported conversions.
switch (sourceType)
{
case BuiltInType.String:
{
return (string)value;
}
case BuiltInType.Boolean:
{
return XmlConvert.ToString((bool)value);
}
case BuiltInType.SByte:
{
return XmlConvert.ToString((sbyte)value);
}
case BuiltInType.Byte:
{
return XmlConvert.ToString((byte)value);
}
case BuiltInType.Int16:
{
return XmlConvert.ToString((short)value);
}
case BuiltInType.UInt16:
{
return XmlConvert.ToString((ushort)value);
}
case BuiltInType.Int32:
{
return XmlConvert.ToString((int)value);
}
case BuiltInType.UInt32:
{
return XmlConvert.ToString((uint)value);
}
case BuiltInType.Int64:
{
return XmlConvert.ToString((long)value);
}
case BuiltInType.UInt64:
{
return XmlConvert.ToString((ulong)value);
}
case BuiltInType.Float:
{
return XmlConvert.ToString((float)value);
}
case BuiltInType.Double:
{
return XmlConvert.ToString((double)value);
}
case BuiltInType.DateTime:
{
return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Unspecified);
}
case BuiltInType.Guid:
{
return ((Guid)value).ToString();
}
case BuiltInType.NodeId:
{
return ((NodeId)value).ToString();
}
case BuiltInType.ExpandedNodeId:
{
return ((ExpandedNodeId)value).ToString();
}
case BuiltInType.LocalizedText:
{
return ((LocalizedText)value).Text;
}
case BuiltInType.QualifiedName:
{
return ((QualifiedName)value).ToString();
}
}
// conversion not supported.
return DBNull.Value;
}