예제 #1
0
        public static void WriteTypeMetaInfo(IStreamWriter writer, ITypeStructure typeItem, bool writeTypeMetaPrefix = true)
        {
            if (writeTypeMetaPrefix)
            {
                writer.WriteUInt8(ValueItem.TypeMetaInfo);
            }
            writer.WriteUInt8(SingleTypeDescr);

            Type type = typeItem.RuntimeType;

            writer.WriteString(type.Assembly.GetName().Name);

            writer.WriteString(type.FullName);

            short itemCount = (short)typeItem.Items.Count;

            writer.WriteInt16(itemCount);


            for (int i = 0; i < itemCount; i++)
            {
                var memberItem = typeItem.Items[i];

                writer.WriteInt16((short)memberItem.Type);  // ItemType Enum
                writer.WriteUInt32(memberItem.TypeId);      // TypeId (Type Hash)
                writer.WriteString(memberItem.Name);        // Property Name
                writer.WriteBool(memberItem.IsNullable);    // Nullable Flag
            }
        }
예제 #2
0
파일: Int16Item.cs 프로젝트: bennil/ioctalk
 /// <summary>
 /// Writes the value.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="value">The value.</param>
 public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
 {
     NullableWrite(writer, value, () =>
     {
         writer.WriteInt16((short)value);
     });
 }
예제 #3
0
        /// <summary>
        /// Write enum type meta infos
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="type"></param>
        public static void WriteTypeMetaInfo(IStreamWriter writer, Type type)
        {
            writer.WriteUInt8(ValueItem.TypeMetaInfo);
            writer.WriteUInt8(SingleTypeDescr);


            writer.WriteString(type.Assembly.GetName().Name);

            writer.WriteString(type.FullName);

            // Write 0 items (only type specification in case of enum)
            writer.WriteInt16(0);
        }