public override void WriteValue(AMFValue value)
{
if (value==null) {
WriteNull();
return;
}
switch (value.Type) {
case AMFValueType.Boolean:
WriteBool((bool)value);
break;
case AMFValueType.ByteArray:
WriteByteArray((byte[])value.Value);
break;
case AMFValueType.Date:
WriteDate((DateTime)value);
break;
case AMFValueType.Double:
WriteNumber((double)value);
break;
case AMFValueType.ECMAArray:
WriteEcmaArray((IDictionary<string,AMFValue>)value.Value);
break;
case AMFValueType.Integer:
WriteNumber((int)value);
break;
case AMFValueType.Null:
WriteNull();
break;
case AMFValueType.Object:
WriteObject((AMFObject)value);
break;
case AMFValueType.ObjectEnd:
WriteMarker(AMF0Marker.ObjectEnd);
break;
case AMFValueType.StrictArray:
WriteStrictArray((AMFValue[])value);
break;
case AMFValueType.String:
WriteString((string)value);
break;
case AMFValueType.Undefined:
WriteMarker(AMF0Marker.Undefined);
break;
case AMFValueType.XML:
WriteXML((string)value);
break;
case AMFValueType.XMLDocument:
WriteXML((string)value);
break;
default:
throw new ArgumentException();
}
}