Beispiel #1
0
        public static void Convert(
            this Exporter exporter,
            object convertible,
            IFormatProvider prov = null)
        {
            if (convertible is Array)
            {
                foreach (var item in (Array)convertible)
                {
                    Convert(exporter, item, prov);
                }
            }
            else
            {
                var convert = convertible as IConvertible;
                if (convert != null)
                {
                    switch (convert.GetTypeCode())
                    {
                    case TypeCode.Object: exporter.Ref((Reference)convert); break;

                    case TypeCode.String: exporter.ASCII(convert.ToString(prov)); break;

                    case TypeCode.DateTime: exporter.Value(convert.ToDateTime(prov).Ticks); break;

                    case TypeCode.Boolean: exporter.Value(convert.ToBoolean(prov)); break;

                    case TypeCode.Int16: exporter.Value(convert.ToInt16(prov)); break;

                    case TypeCode.Int32: exporter.Value(convert.ToInt32(prov)); break;

                    case TypeCode.Int64: exporter.Value(convert.ToInt64(prov)); break;

                    case TypeCode.UInt16: exporter.Value(convert.ToUInt16(prov)); break;

                    case TypeCode.UInt32: exporter.Value(convert.ToUInt32(prov)); break;

                    case TypeCode.UInt64: exporter.Value(convert.ToUInt64(prov)); break;

                    case TypeCode.Single: exporter.Value(convert.ToSingle(prov)); break;

                    case TypeCode.Double: exporter.Value(convert.ToDouble(prov)); break;

                    case TypeCode.Byte: exporter.Value(convert.ToByte(prov)); break;

                    case TypeCode.SByte: exporter.Value(convert.ToSByte(prov)); break;

                    case TypeCode.Char: exporter.Value((ushort)convert.ToChar(prov)); break;

                    default: throw new System.NotImplementedException();
                    }
                }
                else
                {
                    exporter.Ref((Reference)convertible);
                }
            }
        }