private Write ( BsonType t, string name, object o ) : void | ||
t | BsonType | |
name | string | |
o | object | |
Результат | void |
private void Write(BsonType t, string name, object o)
{
Write((sbyte)t);
Write(name);
switch (t)
{
case BsonType.NUMBER:
Write((double)o);
break;
case BsonType.STRING:
Write(o as string, true);
break;
case BsonType.OBJECT:
Write(o as IDictionary<string, object>);
break;
case BsonType.ARRAY:
WriteList(o as IList);
break;
case BsonType.BINARY:
var buf = o as byte[];
Write(buf.Length);
Write((sbyte)0x02);
Write(buf);
break;
case BsonType.OID:
Write(o as ObjectId);
break;
case BsonType.BOOLEAN:
Write((bool)o);
break;
case BsonType.DATE:
Write(((DateTime)o).ToBson());
break;
case BsonType.NULL:
break;
case BsonType.REGEX:
Write(o as Regex);
break;
case BsonType.REF:
Write(o as DBRef);
break;
case BsonType.CODE:
Write(o.ToString(), true);
break;
case BsonType.SYMBOL:
Write(o.ToString(), true);
break;
case BsonType.CODE_W_SCOPE:
var sc = o as ScopedCode;
var pos = (int)BaseStream.Position;
Write(0);
Write(sc.Code, true);
Write(sc.Scope);
var end = (int)BaseStream.Position;
Seek(pos, SeekOrigin.Begin);
Write(end - pos);
Seek(end, SeekOrigin.Begin);
break;
case BsonType.NUMBER_INT:
Write((int)o);
break;
case BsonType.TIMESTAMP:
Write(((TimeStamp)o).Value);
break;
case BsonType.NUMBER_LONG:
Write((long)o);
break;
default:
break;
}
}
BsonWriter::Write ( |
|
BsonWriter::Write ( object>.IDictionary |
|
BsonWriter::Write ( |
|
BsonWriter::Write ( |
|
BsonWriter::Write ( |
|
BsonWriter::Write ( string value ) : void | |
BsonWriter::Write ( string value, bool withLength ) : void |