bool ISubjectPersistance.SaveSubject(string provider, StoredSubject subject) { Guard.ArgumentNull(subject, nameof(subject)); var file = Initiaize(IsolatedStorageFile.GetStore(Scope, null)); var root = Path.Combine(ROOT_DIRECTORY, provider); var path = Path.Combine(root, subject.Name); InitializeSubDirectory(file, path); var filePath = Path.Combine(path, string.Concat(subject.Key, ".dat")); try { using var stream = new IsolatedStorageFileStream(filePath, FileMode.Create, file); var serializer = new BinaryCompressSerializer(); var bytes = serializer.Serialize(subject); stream.Write(bytes, 0, bytes.Length); return(true); } catch { return(false); } }
void ISubjectPersistance.ReadSubjects(string provider, Func <StoredSubject, bool> readAndAccept) { Guard.ArgumentNull(readAndAccept, nameof(readAndAccept)); var root = Path.Combine(ROOT_DIRECTORY, provider); var file = IsolatedStorageFile.GetStore(Scope, null); if (!file.DirectoryExists(root)) { return; } foreach (var dirName in file.GetDirectoryNames(Path.Combine(root, "*"))) { var subPath = Path.Combine(root, dirName); var deleted = new List <string>(); foreach (var fileName in file.GetFileNames(Path.Combine(subPath, "*"))) { var filePath = Path.Combine(subPath, fileName); var key = fileName.Substring(0, fileName.LastIndexOf(".")); try { using var stream = new IsolatedStorageFileStream(filePath, FileMode.Open, FileAccess.ReadWrite, file); using var memory = stream.CopyToMemory(); var serializer = new BinaryCompressSerializer(); var subject = serializer.Deserialize <StoredSubject>(memory.ToArray()); if (subject.ExpiresAt < DateTime.Now) { deleted.Add(filePath); continue; } subject.PublishRetries++; if (readAndAccept(subject)) { deleted.Add(filePath); } else { var bytes = serializer.Serialize(subject); stream.Seek(0, SeekOrigin.Begin); stream.Write(bytes, 0, bytes.Length); } } catch { } } foreach (var fileName in deleted) { file.DeleteFile(fileName); } } }
public void SerializeTest() { var serializer = new BinaryCompressSerializer(); var obj = new BinaryCryptoData { Age = 12, Name = "huangxd", Birthday = DateTime.Parse("1982-9-20") }; var bytes = serializer.Serialize(obj); Assert.IsNotNull(bytes); }
public void ReadTest() { var regKey = Registry.CurrentUser.OpenSubKey("software\\fireasy", true); if (regKey == null) { regKey = Registry.CurrentUser.CreateSubKey("software\\fireasy"); } var stream = new BinaryCompressSerializer(); var data = new BinaryConnectionStore { ConnectionString = "test", ProviderType = "mysql" }; regKey.SetValue("test1", stream.Serialize(data)); regKey.Close(); var section = ConfigurationUnity.GetSection <InstanceConfigurationSection>(); Assert.AreEqual("test", section.Settings["reg1"].ConnectionString); }
/// <summary> /// json序列化后进行压缩。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value"></param> /// <returns></returns> public virtual byte[] Serialize <T>(T value) { var compress = new BinaryCompressSerializer(); return(compress.Serialize(serializer.Serialize(value))); }