Explorar el Código

修改了mongo中IOS不支持的部分,可以用mongdb序列化消息了

tanghai hace 8 años
padre
commit
0f752a9bf0

+ 2 - 2
Server/Model/Component/NetOuterComponent.cs

@@ -24,14 +24,14 @@
 		public void Awake()
 		{
 			this.Awake(NetworkProtocol.TCP);
-			this.MessagePacker = new JsondotnetPacker();
+			this.MessagePacker = new MongoPacker();
 			this.MessageDispatcher = new OuterMessageDispatcher();
 		}
 
 		public void Awake(string host, int port)
 		{
 			this.Awake(NetworkProtocol.TCP, host, port);
-			this.MessagePacker = new JsondotnetPacker();
+			this.MessagePacker = new MongoPacker();
 			this.MessageDispatcher = new OuterMessageDispatcher();
 		}
 

+ 15 - 13
Unity/Assets/Plugins/MongoDB/MongoDB.Bson/Serialization/BsonMemberMap.cs

@@ -16,7 +16,7 @@
 using System;
 using System.Linq.Expressions;
 using System.Reflection;
-using System.Reflection.Emit;
+//using System.Reflection.Emit;
 using MongoDB.Bson.Serialization.Serializers;
 
 namespace MongoDB.Bson.Serialization
@@ -580,18 +580,20 @@ namespace MongoDB.Bson.Serialization
                 throw new BsonSerializationException(message);
             }
 
-            var sourceType = fieldInfo.DeclaringType;
-            var method = new DynamicMethod("Set" + fieldInfo.Name, null, new[] { typeof(object), typeof(object) }, true);
-            var gen = method.GetILGenerator();
-
-            gen.Emit(OpCodes.Ldarg_0);
-            gen.Emit(OpCodes.Castclass, sourceType);
-            gen.Emit(OpCodes.Ldarg_1);
-            gen.Emit(OpCodes.Unbox_Any, fieldInfo.FieldType);
-            gen.Emit(OpCodes.Stfld, fieldInfo);
-            gen.Emit(OpCodes.Ret);
-
-            return (Action<object, object>)method.CreateDelegate(typeof(Action<object, object>));
+			// ios上不支持Emit
+            //var sourceType = fieldInfo.DeclaringType;
+            //var method = new DynamicMethod("Set" + fieldInfo.Name, null, new[] { typeof(object), typeof(object) }, true);
+            //var gen = method.GetILGenerator();
+			//
+            //gen.Emit(OpCodes.Ldarg_0);
+            //gen.Emit(OpCodes.Castclass, sourceType);
+            //gen.Emit(OpCodes.Ldarg_1);
+            //gen.Emit(OpCodes.Unbox_Any, fieldInfo.FieldType);
+            //gen.Emit(OpCodes.Stfld, fieldInfo);
+            //gen.Emit(OpCodes.Ret);
+			//
+            //return (Action<object, object>)method.CreateDelegate(typeof(Action<object, object>));
+	        return (obj, value) => { fieldInfo.SetValue(obj, value); };
         }
 
         private Func<object, object> GetGetter()

+ 2 - 2
Unity/Assets/Scripts/Component/NetOuterComponent.cs

@@ -19,14 +19,14 @@
 		public void Awake()
 		{
 			this.Awake(NetworkProtocol.TCP);
-			this.MessagePacker = new JsondotnetPacker();
+			this.MessagePacker = new MongoPacker();
 			this.MessageDispatcher = new ClientDispatcher();
 		}
 
 		public void Awake(string host, int port)
 		{
 			this.Awake(NetworkProtocol.TCP, host, port);
-			this.MessagePacker = new JsondotnetPacker();
+			this.MessagePacker = new MongoPacker();
 			this.MessageDispatcher = new ClientDispatcher();
 		}