<p>I have a class that maintans a reference to a Hashtable and serializes/deserializes that Hashtable. After the call to SerializationInfo.GetValue, the Hashtable is not fully deserialized because the deserialization happens during the IDeserialization calback.</p>

<pre><code>Hashtable hashtable = (Hashtable) info.GetValue("hash", typeof(Hashtable));
</code></pre>

<p>I also implemented the IDeserialization callback in the parent class, but there too the Hashtable is not fully deserialized yet. I expected it to be if the deserialization is happening from the inside out.</p>

<p>My question is, is it safe to explicitely call Hashtable.OnDeserialization from the OnDeserialization method of my parent class, so that I can enumerate it at that point?</p>

<pre><code>public virtual void OnDeserialization(object sender)
{
    hashtable.OnDeserialization(sender);
}
</code></pre>

I suspect you have already googled, but I happened to across
this
pattern yesterday.
```
```
public BoringClass(SerializationInfo info, StreamingContext context)
{
    Hashtable hashtable = (Hashtable) info.GetValue("hash", typeof(Hashtable));
    hashtable.OnDeserialization(this);

    Console.WriteLine("Value is: " + hashtable["testItem"]);

}
```
```