I'm serializing a class to disk (using BinaryFormatter), and then deserializing. Pretty straight-forward stuff. When I deserialize and inspect my object in debugger (VS) I see that my private members are populated just fine. However, If I add an OnDeserialized attributed method and use the debugger after calling Deserialize() I find that the private members aren't populated yet. What gives? I thought OnDeserialized is called AFTER the object is deserialized (and thus members should be available). In my case, I'm finding that they are available AFTER OnDeserialized, which doesn't make sense. What am I doing wrong?