public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (nominalType != typeof(Dictionary <TKey, TValue>)) { throw new ArgumentException("Cannot serialize anything but self"); } var dictionary = value as Dictionary <TKey, TValue>; IEnumerable <MongoDictionaryValue <TKey, TValue> > databaseEntries; if (dictionary != null) { databaseEntries = dictionary.Select(keyValuePair => new MongoDictionaryValue <TKey, TValue> { Key = keyValuePair.Key, Value = keyValuePair.Value }); } else { databaseEntries = new MongoDictionaryValue <TKey, TValue>[] { }; } var ser = new ArraySerializer <MongoDictionaryValue <TKey, TValue> >(); ser.Serialize(bsonWriter, typeof(MongoDictionaryValue <TKey, TValue>[]), databaseEntries.ToArray(), options); }
public void WriteXml(XmlWriter writer) { foreach (IList <T> list in array) { if (list != null) { ArraySerializer.Serialize(writer, list, XmlUtil.DefaultNamespace); } } }
public void Serialize(BsonWriter bsonWriter, Type nominalType, IBsonSerializationOptions options) { if (nominalType != typeof(Location)) { throw new ArgumentException("Cannot serialize anything but self"); } var ser = new ArraySerializer <double>(); ser.Serialize(bsonWriter, typeof(double[]), new[] { Longitude, Latitude }, options); }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { bsonWriter.WriteNull(); } else { var pack = (Pack)value; var ser = new ArraySerializer <Card>(); ser.Serialize(bsonWriter, typeof(Card[]), pack.GetAllCards(), options); } }
/// <summary> /// Serializes an object. /// </summary> /// <param name="value">The value to be serialized</param> /// <returns>The serialized object</returns> public static string Serialize(object value) { if (value == null) { return(null); } var serializable = value as IXunitSerializable; if (serializable != null) { var info = new XunitSerializationInfo(); serializable.Serialize(info); return(info.ToSerializedString()); } var charData = value as char?; if (charData != null) { return(((ushort)charData.GetValueOrDefault()).ToString(CultureInfo.InvariantCulture)); } var stringData = value as string; if (stringData != null) { return(ToBase64(stringData)); } var byteData = value as byte?; if (byteData != null) { return(byteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var ushortData = value as ushort?; if (ushortData != null) { return(ushortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var shortData = value as short?; if (shortData != null) { return(shortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var uintData = value as uint?; if (uintData != null) { return(uintData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var intData = value as int?; if (intData != null) { return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var ulongData = value as ulong?; if (ulongData != null) { return(ulongData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var longData = value as long?; if (longData != null) { return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var floatData = value as float?; if (floatData != null) { return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var doubleData = value as double?; if (doubleData != null) { return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var decimalData = value as decimal?; if (decimalData != null) { return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var booleanData = value as bool?; if (booleanData != null) { return(booleanData.GetValueOrDefault().ToString()); } var datetimeData = value as DateTime?; if (datetimeData != null) { return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var datetimeoffsetData = value as DateTimeOffset?; if (datetimeoffsetData != null) { return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var typeData = value as Type; if (typeData != null) { if (!typeData.IsFromLocalAssembly()) { throw new ArgumentException(String.Format("We cannot serialize type {0} because it lives in the GAC", typeData.FullName), "value"); } return(SerializationHelper.GetTypeNameForSerialization(typeData)); } var valueType = value.GetType(); if (valueType.IsEnum()) { if (!valueType.IsFromLocalAssembly()) { throw new ArgumentException(String.Format("We cannot serialize enum {0}.{1} because it lives in the GAC", valueType.FullName, value), "value"); } return(value.ToString()); } var arrayData = value as Array; if (arrayData != null) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(arrayData); arraySer.Serialize(info); return(info.ToSerializedString()); } throw new ArgumentException("We don't know how to serialize type " + valueType.FullName, "value"); }
/// <summary> /// Serializes an object. /// </summary> /// <param name="value">The value to be serialized</param> /// <returns>The serialized object</returns> public static string Serialize(object value) { if (value == null) { return(null); } var serializable = value as IXunitSerializable; if (serializable != null) { var info = new XunitSerializationInfo(); serializable.Serialize(info); return(info.ToSerializedString()); } var stringData = value as string; if (stringData != null) { return(ToBase64(stringData)); } var intData = value as int?; if (intData != null) { return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var longData = value as long?; if (longData != null) { return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var floatData = value as float?; if (floatData != null) { return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var doubleData = value as double?; if (doubleData != null) { return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var decimalData = value as decimal?; if (decimalData != null) { return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var booleanData = value as bool?; if (booleanData != null) { return(booleanData.GetValueOrDefault().ToString()); } var datetimeData = value as DateTime?; if (datetimeData != null) { return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var datetimeoffsetData = value as DateTimeOffset?; if (datetimeoffsetData != null) { return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var typeData = value as Type; if (typeData != null) { return(SerializationHelper.GetTypeNameForSerialization(typeData)); } if (value.GetType().IsEnum()) { return(value.ToString()); } var array = value as object[]; if (array != null) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(array); arraySer.Serialize(info); return(info.ToSerializedString()); } throw new ArgumentException("We don't know how to serialize type " + value.GetType().FullName, "value"); }
/// <summary> /// Serializes an object. /// </summary> /// <param name="value">The value to be serialized</param> /// <returns>The serialized object</returns> public static string Serialize(object value) { if (value == null) { return(""); } var serializable = value as IXunitSerializable; if (serializable != null) { var info = new XunitSerializationInfo(); serializable.Serialize(info); return(info.ToSerializedString()); } var stringData = value as string; if (stringData != null) { return(ToBase64(stringData)); } var intData = value as int?; if (intData != null) { return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var longData = value as long?; if (longData != null) { return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var floatData = value as float?; if (floatData != null) { return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var doubleData = value as double?; if (doubleData != null) { return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var decimalData = value as decimal?; if (decimalData != null) { return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var array = value as object[]; if (array != null) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(array); arraySer.Serialize(info); return(info.ToSerializedString()); } throw new ArgumentException("We don't know how to serialize type " + value.GetType().FullName, "value"); }
/// <summary> /// Serializes an object. /// </summary> /// <param name="value">The value to be serialized.</param> /// <returns>The serialized object.</returns> public static string Serialize(object value) { if (value == null) { return(null); } if (value is IXunitSerializable serializable) { var info = new XunitSerializationInfo(); serializable.Serialize(info); return(info.ToSerializedString()); } var charData = value as char?; if (charData != null) { return(((ushort)charData.GetValueOrDefault()).ToString(CultureInfo.InvariantCulture)); } if (value is string stringData) { return(ToBase64(stringData)); } var byteData = value as byte?; if (byteData != null) { return(byteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var sbyteData = value as sbyte?; if (sbyteData != null) { return(sbyteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var ushortData = value as ushort?; if (ushortData != null) { return(ushortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var shortData = value as short?; if (shortData != null) { return(shortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var uintData = value as uint?; if (uintData != null) { return(uintData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var intData = value as int?; if (intData != null) { return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var ulongData = value as ulong?; if (ulongData != null) { return(ulongData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var longData = value as long?; if (longData != null) { return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } var floatData = value as float?; if (floatData != null) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(BitConverter.GetBytes(floatData.GetValueOrDefault())); arraySer.Serialize(info); return(info.ToSerializedString()); } var doubleData = value as double?; if (doubleData != null) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(BitConverter.GetBytes(doubleData.GetValueOrDefault())); arraySer.Serialize(info); return(info.ToSerializedString()); } var decimalData = value as decimal?; if (decimalData != null) { return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); } #pragma warning disable CA1305 var booleanData = value as bool?; if (booleanData != null) { return(booleanData.GetValueOrDefault().ToString()); } #pragma warning restore CA1305 var datetimeData = value as DateTime?; if (datetimeData != null) { return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var datetimeoffsetData = value as DateTimeOffset?; if (datetimeoffsetData != null) { return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture)); // Round-trippable format } var typeData = value as Type; if (typeData != null) { return(SerializationHelper.GetTypeNameForSerialization(typeData)); } var valueType = value.GetType(); if (valueType.IsEnum()) { if (!valueType.IsFromLocalAssembly()) { throw new ArgumentException($"We cannot serialize enum {valueType.FullName}.{value} because it lives in the GAC", nameof(value)); } return(value.ToString()); } if (value is Array arrayData) { var info = new XunitSerializationInfo(); var arraySer = new ArraySerializer(arrayData); arraySer.Serialize(info); return(info.ToSerializedString()); } throw new ArgumentException($"We don't know how to serialize type {valueType.FullName}", nameof(value)); }