Exemplo n.º 1
0
        public override SharpTag Serialize(T value)
        {
            SharpTag tag = value.SerializeData();

            tag["<type>"] = value.GetType().FullName;
            return(tag);
        }
Exemplo n.º 2
0
        public override T Deserialize(SharpTag tag)
        {
            if (tag.ContainsKey("<type>") && tag.GetString("<type>") != Type.FullName)
            {
                Type type = TagSerializer.GetType(tag.GetString("<type>"));

                if (type != null && Type.IsAssignableFrom(type) && TagSerializer.TryGetSerializer(type, out TagSerializer serializer))
                {
                    return((T)serializer.Deserialize(tag));
                }
            }

            if (deserializer == null)
            {
                throw new ArgumentException(string.Format("Missing deserializer for type '{0}'", Type.FullName));
            }

            return(deserializer(tag));
        }