我确定这是一个非常初级的问题,但我似乎找不到信息...
我的程序中有一些对象序列化和反序列化。对象具有可空字段,其中之一是称为DefaultValue的字段,它是一个对象引用。
当在序列化之前该对象引用为空时,反序列化对象包含对空对象的引用。
如何检测此空对象?与null的比较失败,因为它引用了一个空的System.Object,与新Object的比较也是如此。
以下是一些伪代码以突出我的问题...
我的程序中有一些对象序列化和反序列化。对象具有可空字段,其中之一是称为DefaultValue的字段,它是一个对象引用。
当在序列化之前该对象引用为空时,反序列化对象包含对空对象的引用。
如何检测此空对象?与null的比较失败,因为它引用了一个空的System.Object,与新Object的比较也是如此。
以下是一些伪代码以突出我的问题...
class MyObj
{
public object DefaultValue {get; set;}
public object AnotherValue {get; set;}
}
class Program
{
internal static void Main()
{
MyObj obj = new MyObj();
obj.AnotherValue = "Some String";
//Serialse object
String serialisedObject = Serialise(obj);
//Deserialse object
MyObj deserialisedObj = Deserialise(serialisedObject);
if (deserialisedObj.DefaultValue != null) //This will always be true :(
{
String default = deserialisedObj.DefaultValue.ToString();
}
}
}