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); } } }
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); } } }