private static void PutEnum(this NetDataWriter writer, object value, Type type) { if (!type.IsEnum) { throw new ArgumentException("T must be an enumerated type"); } writer.PutObject(value, type.GetEnumUnderlyingType()); }
private static void PutObject(this NetDataWriter writer, object value, Type type) { if (value == null || type == null) { return; } if (value is INetSerializable) { (value as INetSerializable).Serialize(writer); } else if (type.IsEnum) { writer.PutObject(value, type.GetEnumUnderlyingType()); } else if (type == typeof(bool)) { writer.Put((bool)value); } else if (type == typeof(byte)) { writer.Put((byte)value); } else if (type == typeof(sbyte)) { writer.Put((sbyte)value); } else if (type == typeof(char)) { writer.Put((char)value); } else if (type == typeof(short)) { writer.Put((short)value); } else if (type == typeof(ushort)) { writer.Put((ushort)value); } else if (type == typeof(int)) { writer.Put((int)value); } else if (type == typeof(uint)) { writer.Put((uint)value); } else if (type == typeof(long)) { writer.Put((long)value); } else if (type == typeof(ulong)) { writer.Put((ulong)value); } else if (type == typeof(float)) { writer.Put((float)value); } else if (type == typeof(double)) { writer.Put((double)value); } else if (type == typeof(string)) { writer.Put((string)value); } else if (type == typeof(IPEndPoint)) { writer.Put((IPEndPoint)value); } else { throw new Exception("Unable to serialize object " + value + " of type " + type); } }