我确定这是一个非常棒的问题,但我似乎无法找到这些信息......
我的程序中出现了一些Obejct serialisatino和反序列化。对象具有可空字段,其中一个字段是名为DefaultValue的字段,并且是对象引用。
在序列化之前此对象引用为null时,反序列化对象包含对空对象的引用。
检测此空对象的最佳方法是什么?与null的比较失败,因为它引用了一个空的System.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();
}
}
}
答案 0 :(得分:1)
也许......
if ((deserialisedObj.DefaultValue != null)
&& (deserialisedObj.DefaultValue.GetType() != typeof(object)))
{
// ...
}