Beispiel #1
0
        KeyValueSerializationInfo SerializeKeyValuePair(KeyValuePair <string, object> pair)
        {
            var info = new KeyValueSerializationInfo {
                Key      = pair.Key,
                TypeName = pair.Value?.GetType()?.AssemblyQualifiedName
            };

            if (pair.Value == null)
            {
                info.SerializedValue = null;
            }
            else
            {
                info.SerializedValue = null;
                var serializer = new DataContractSerializer(pair.Value.GetType());

                using (var ms = new MemoryStream()) {
                    serializer.WriteObject(ms, pair.Value);

                    var buffer = ms.ToArray();
                    info.SerializedValue = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
                }
            }

            return(info);
        }
Beispiel #2
0
        KeyValuePair <string, object> DeserializeKeyValuePair(KeyValueSerializationInfo info)
        {
            var    key   = info.Key;
            object value = null;

            if (!string.IsNullOrWhiteSpace(info.SerializedValue))
            {
                var type = Type.GetType(info.TypeName, false);
                if (type != null)
                {
                    var serializer = new DataContractSerializer(type);
                    using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(info.SerializedValue))) {
                        value = serializer.ReadObject(ms);
                    }
                }
            }

            return(new KeyValuePair <string, object>(key, value));
        }