public void WriteData(AMFWriter writer, object data) { IList list = data as IList; if (list != null) { writer.WriteByte(AMF3TypeCode.Array); writer.WriteAMF3Array(list); return; } IListSource listSource = data as IListSource; if (listSource != null) { writer.WriteByte(AMF3TypeCode.Array); writer.WriteAMF3Array(listSource.GetList()); return; } IDictionary dictionary = data as IDictionary; if (dictionary != null) { writer.WriteByte(AMF3TypeCode.Dictionary); writer.WriteAMF3Dictionary(dictionary); return; } if (data is Exception) { writer.WriteByte(AMF3TypeCode.Object); writer.WriteAMF3Object(data); return; } if (data is IExternalizable) { writer.WriteByte(AMF3TypeCode.Object); writer.WriteAMF3Object(data); return; } if (data is IEnumerable) { ArrayList tmp = new ArrayList(); foreach (object element in (data as IEnumerable)) { tmp.Add(element); } writer.WriteByte(AMF3TypeCode.Array); writer.WriteAMF3Array(tmp); return; } writer.WriteByte(AMF3TypeCode.Object); writer.WriteAMF3Object(data); }
public void WriteData(AMFWriter writer, object data) { Type type = data.GetType().GetElementType(); if (type == typeof(object)) { writer.WriteByte(AMF3TypeCode.Array); writer.WriteAMF3Array(data as Array); return; } if (type == typeof(int)) { writer.WriteByte(AMF3TypeCode.IntVector); IList rawData = (IList)data; List <int> list = new List <int>(rawData.Count); foreach (int item in rawData) { list.Add(item); } writer.WriteAMF3IntVector(list, data is Array); return; } if (type == typeof(uint)) { writer.WriteByte(AMF3TypeCode.UIntVector); IList rawData = (IList)data; List <uint> list = new List <uint>(rawData.Count); foreach (uint item in rawData) { list.Add(item); } writer.WriteAMF3UIntVector(list, data is Array); return; } if (type == typeof(float)) { writer.WriteByte(AMF3TypeCode.NumberVector); IList rawData = (IList)data; List <double> list = new List <double>(rawData.Count); foreach (float item in rawData) { list.Add(Convert.ToDouble(item)); } writer.WriteAMF3DoubleVector(list, data is Array); return; } if (type == typeof(double)) { writer.WriteByte(AMF3TypeCode.NumberVector); IList rawData = (IList)data; List <double> list = new List <double>(rawData.Count); foreach (double item in rawData) { list.Add(item); } writer.WriteAMF3DoubleVector(list, data is Array); return; } writer.WriteByte(AMF3TypeCode.ObjectVector); writer.WriteAMF3ObjectVector(data as IList); }