asksim 上传错之前的图,现在也是一样的了
ET8改成序列化前要调用BeginInit。你用MongoHelper序列化就行了,里面自动调用了
egametang
感谢猫大,已经发现了
egametang 猫大,反序列化还是存在问题,是不是还是和类型名有关,我用普通的类去注册Mongo,把其中一个放到另一个的List中,序列化与序列化都可以正常
用继承于Entity的反序列化依然存在问题
按道理Entity的ToBson应该是调用了BeginInit了。继承自 Object的。为何还不行呢?
public abstract class Object { public override string ToString() { return MongoHelper.ToJson(this); } public string ToJson() { return MongoHelper.ToJson(this); } public byte[] ToBson() { return MongoHelper.Serialize(this); } }
asksim ToBson传的是object又不是Object类型
我专门针对ET.Object写了一个BsonExtension,然后调整了Object:
public static class BsonExtensions { public static T FromBson<T>(this byte[] bytes) { return MongoHelper.Deserialize<T>(bytes); } public static byte[] ToBson<T>(this T obj) where T : Object { return MongoHelper.Serialize(obj); } public static string ToJson<T>(this T obj) where T : Object { return MongoHelper.ToJson(obj); } } public abstract class Object { public override string ToString() { return MongoHelper.ToJson(this); } }
asksim 测试了,依然是不行的
kylinok 我都说了用MongoHelper.Serialize,不要用ToBson。
egametang 有写了针对ET.Object的ToBson扩展方法的。另外 Object 个基类里面也有ToBson方法.
猫大我用的就是MongoHelper
kylinok 反序列化后要挂到树上,没有父亲,childrendb是不会复制到children的
egametang 我之前就是挂到树上,发现没有反序列化成功,然后查到图里面是直接childrenDB里面就没有内容了
你这个Test没有ISerializeToEntity接口吧
egametang 有的,上面ADD之后,里面的childrenDB里面是有内容的
你这不是ET8,ET8 AddChild不会把Test加到ChildrenDB中去的
egametang 我这就是ET8啊,调试出来,就图里面的那一步ChildrenAdd之后,莫名其妙childrenDB就不为空了
我再试着调试一下,看是不是多线程哪里给他加进去了
我这里也刚测试了下,貌似也不行😂,直接吧TestComponent挂到了mailbox上。
[ChildOf] public class TestComponent: Entity, IAwake, ISerializeToEntity { public int a { get; set; } }
我试了一下,是有个奇怪的问题,还没找到