/// <summary> /// 反序列语言包内容; /// </summary> public LanguagePackDescription Deserialize(Stream stream, out LanguageDictionary dictionary) { LanguagePackDescription?description = null; dictionary = null; using (ZipInputStream zipInputStream = new ZipInputStream(stream)) { zipInputStream.IsStreamOwner = false; ZipEntry entry; while ((entry = zipInputStream.GetNextEntry()) != null) { if (entry.IsFile) { if (!description.HasValue && entry.Name == descriptionFileName) { description = descriptionSerializer.Value.Deserialize(zipInputStream); } else if (entry.Name.EndsWith(dictionaryFileExtension)) { var value = languageListSerializer.Value.Deserialize(zipInputStream); if (dictionary == null) { dictionary = new LanguageDictionary(); } dictionary.Add(value); } } } } if (description.HasValue) { return(description.Value); } else { throw new InvalidOperationException(); } }