反序列化行为
本文关键字:反序列化 | 更新日期: 2023-09-27 18:22:42
我有可序列化类
[Serializable]
public class Entity
{
public Guid? SomeId {get;set;}
...
}
在数据库中,它有SomeId==null当从DB还原时,它有SomeId==Guid.Empty,但如果我添加emty默认构造函数,它将用SomeId==null还原
有人能解释这种行为吗
感谢
序列化程序需要空构造函数来创建Entity
的实例。创建此实例后,它将执行反序列化:使用其序列化值设置各个属性。这就是为什么属性设置者也必须是公共的。
要找出实际问题,您可以开始验证数据是否已正确序列化。
我认为您使用的是OR映射器软件。在这种情况下,也可能是OR映射器正在使用默认值初始化SomeId
属性。
因为使用了Nullable类型Guid,则添加emty默认构造符,使SomeId为null。
如果你使用公共厕所?IsTrue{get;set;},可以为IsTrue属性分配true、false或null值。详细信息msdn中可为null的类型:http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx