public static TheTvDbCacheSerializer Load(FileInfo cacheFile, FileInfo loadFrom = null)
        {
            try
            {
                var fileToUse = loadFrom ?? cacheFile;

                if (fileToUse.Exists)
                {
                    var theTvDbCache = Deserialize(fileToUse);

                    theTvDbCache.IsSaved = true;
                    theTvDbCache.LoadOk = true;
                    theTvDbCache.LoadResult = string.Empty;

                    return theTvDbCache;
                }

                var cache = new TheTvDbCacheSerializer(cacheFile)
                {
                    LoadOk = true,
                    LoadResult = string.Empty,
                    IsSaved = false,
                    LastUpdated = null,
                    Series = new List<TheTvDbSeries>()
                };

                cache.Save(0);

                return cache;
            }
            catch (Exception e)
            {
                return new TheTvDbCacheSerializer
                {
                    LoadOk = false,
                    LoadResult = e.Message
                };
            }
        }
 private static void Serialize(TheTvDbCacheSerializer theTvDbCache, FileInfo file)
 {
     var serializer = new XmlSerializer(typeof(TheTvDbCacheSerializer));
     using (var fileStream = new FileStream(file.FullName, FileMode.Create, FileAccess.ReadWrite))
     {
         serializer.Serialize(fileStream, theTvDbCache);
     }
 }