示例#1
0
        public static void Write(this BinaryWriter writer, IList value, BinaryUtility.TypeCodes elementTypeCode)
        {
            if (elementTypeCode == BinaryUtility.TypeCodes.Other || BinaryUtility.IsGenericTypeCode(elementTypeCode))
            {
                writer.Write(value.GetType().GetGenericArguments()[0]);
            }

            if (elementTypeCode == BinaryUtility.TypeCodes.Other || BinaryUtility.IsReferenceTypeCode(elementTypeCode))
            {
                writer.Write(value.Count);

                for (int i = 0; i < value.Count; i++)
                {
                    writer.Write(value[i]);
                }
            }
            else
            {
                writer.Write(value.Count);

                for (int i = 0; i < value.Count; i++)
                {
                    writer.Write(value[i], elementTypeCode);
                }
            }
        }
示例#2
0
        public static void Write(this BinaryWriter writer, Array value, BinaryUtility.TypeCodes elementTypeCode)
        {
            if (elementTypeCode == BinaryUtility.TypeCodes.Other || BinaryUtility.IsGenericTypeCode(elementTypeCode))
            {
                writer.Write(value.GetType().GetElementType());
            }

            if (BinaryUtility.IsReferenceTypeCode(elementTypeCode))
            {
                writer.Write(value.Length);

                for (int i = 0; i < value.Length; i++)
                {
                    writer.Write(value.GetValue(i));
                }
            }
            else
            {
                writer.Write(value.Length);

                for (int i = 0; i < value.Length; i++)
                {
                    writer.Write(value.GetValue(i), elementTypeCode);
                }
            }
        }