Static, sealed, singleton or something else for application-wide data which is serialized/deserialized
<p>My application loads an XML data set from a file on disk using serialization, keeps that dataset in memory for various operations, then serializes the data set back to disk as it closes. Currently, the object which stores that data set is a child property of the MainForm class. I can access it from other classes using MainForm.MyDataSet.</p>

<p>However, I'd like to implement better practice in terms of the storage of MyDataSet. In an ideal world, I think that it should be static, but this prevents deserialization from XML. I tried making it a singleton, but the instance of the singleton still needs to 'live' somewhere.</p>

<p>What is best practice in this kind of scenario?</p>
