public static void WriteAbcConst <T>(this SwfWriter writer, T value) { var typeCode = Type.GetTypeCode(typeof(T)); switch (typeCode) { case TypeCode.Int32: writer.WriteIntEncoded((int)(object)value); break; case TypeCode.UInt32: writer.WriteUIntEncoded((uint)(object)value); break; case TypeCode.Double: writer.WriteDouble((double)(object)value); break; case TypeCode.String: { var s = value as string; if (string.IsNullOrEmpty(s)) { writer.WriteUIntEncoded(0); } else { var data = Encoding.UTF8.GetBytes(s); writer.WriteUIntEncoded((uint)data.Length); writer.Write(data); } } break; default: throw new NotImplementedException(); } }