2010-10-04 5 views
3

Je suis sûr que ce soit une chose très Noob à demander, mais je ne peux pas sembler trouver les informations ...vide (non nul) Détection objet

J'ai quelques serialisatino Obejct et désérialisation qui se produit dans mon programme. Les objets ont des champs nullables dont l'un est un champ appelé DefaultValue et est une référence d'objet.

Lorsque cette référence d'objet est null avant la sérialisation, l'objet désérialisé contient une référence à un objet vide.

Quelle est la meilleure façon de détecter cet objet vide? Les comparaisons à null échouent car il fait référence à un objet System.Object vide, tout comme les comparaisons avec un nouvel objet.

Certains pseudo-code pour mettre en évidence mon problème ....

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(); 
    } 

} 
} 

Répondre

1

... Peut-être

if ((deserialisedObj.DefaultValue != null) 
    && (deserialisedObj.DefaultValue.GetType() != typeof(object))) 
{ 
    // ... 
} 
+0

Will tester son et voir si elle résout mon problème. –

+0

Oui, ça a l'air de marcher ... J'étais préoccupé par les comparaisons quand DefaultValue est un int (Int32) - mais je pense que ça ira? –