Exemple #1
0
 public static byte[] ToByteArray(this IPackable packable)
 {
     using (var packer = new Packer())
     {
         packable.Pack(packer);
         return(packer.ToByteArray());
     }
 }
Exemple #2
0
        /// <summary>
        /// Convert a packable object to a JSON string.
        /// </summary>
        /// <param name="packable">The object to pack</param>
        /// <returns></returns>
        public static string Pack(IPackable packable, bool storeTypeInformation = false)
        {
            IDictionary <string, object> values = packable.Pack();
            // Annoyingly we need to convert to a IDictionary
            Dictionary <string, object> mutable = new Dictionary <string, object>();

            foreach (KeyValuePair <string, object> pair in values)
            {
                mutable.Add(pair.Key, pair.Value);
            }
            if (storeTypeInformation)
            {
                mutable.Add(TypeKey, packable.GetType().AssemblyQualifiedName);
            }
            return(JsonParser.ToJson(mutable));
        }
Exemple #3
0
        public void Serialize(BinaryWriter writer)
        {
            writer.Write((byte)type);
            switch (type)
            {
            case AnyType.Bool: writer.Write(_longVal != 0); return;

            case AnyType.Byte: writer.Write((byte)_longVal); return;

            case AnyType.Short: writer.Write((short)_longVal); return;

            case AnyType.Int: writer.Write((int)_longVal); return;

            case AnyType.Long: writer.Write(_longVal); return;

            case AnyType.Float: writer.Write(floatVal); return;

            // todo: demonyang 是否有编码问题
            case AnyType.String: writer.Write(strVal); return;

            case AnyType.Object: objVal.Pack(writer); return;
            }
        }
Exemple #4
0
 void PutInBag(IPackable x)
 {
     x.Pack();
 }
Exemple #5
0
 public void Write(string name, IPackable packable)
 {
     Write(name, (writer) => packable?.Pack(writer));
 }
Exemple #6
0
 public void Pack(IPackable packable)
 {
     packable?.Pack(this);
 }