Ver Fonte

修改ToBson方法,序列化可以减少一次new MemoryStream

tanghai há 7 anos atrás
pai
commit
5ed5fd333e
1 ficheiros alterados com 8 adições e 3 exclusões
  1. 8 3
      Server/Model/Base/Helper/MongoHelper.cs

+ 8 - 3
Server/Model/Base/Helper/MongoHelper.cs

@@ -60,9 +60,14 @@ namespace ETModel
 		
 		public static void ToBson(object obj, MemoryStream stream)
 		{
-			byte[] bytes = obj.ToBson();
-			stream.Write(bytes);
-			stream.Seek(0, SeekOrigin.Begin);
+			using (BsonBinaryWriter bsonWriter = new BsonBinaryWriter(stream, BsonBinaryWriterSettings.Defaults))
+			{
+				BsonSerializationContext context = BsonSerializationContext.CreateRoot(bsonWriter);
+				BsonSerializationArgs args = default (BsonSerializationArgs);
+				args.NominalType = typeof(object);
+				IBsonSerializer serializer = BsonSerializer.LookupSerializer(args.NominalType);
+				serializer.Serialize(context, args, obj);
+			}
 		}
 		
 		public static object FromBson(Type type, byte[] bytes)