反序列化行为

本文关键字:反序列化 | 更新日期: 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