我想将我的.net标准应用上的数据序列化到本地文件中,如果可能的话我想避免使用sqlite。
跨平台应用程序的标准建议似乎是PCL存储,但根据此link,PCL存储不再维护,不提供.net标准支持,替代PCLExt不成熟。
您能告诉我是否可以简单地序列化我的数据,例如和json一起?
非常坦克!
答案 0 :(得分:2)
您无法完全访问操作系统的文件系统和平台特定功能(如Android ContentResolver
),但可以在应用程序的沙箱(或外部文件系统,如果您的应用可以访问它)中进行基本文件读/写操作。 NetStandard 2.0工作正常,因此可用于存储和检索基于文本的文件,以便序列化/反序列化Json。
示例,如果您有基于Xamarin.Forms
的解决方案并将.NetStandard 2.0库项目添加到解决方案中,并向其添加Newtonsoft.Json
。您可以在其中创建这些功能:
public static class Common
{
public static void WriteFile(string fileName, Tuple<string, string> obj)
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
File.WriteAllText(Path.Combine(path, fileName), JsonConvert.SerializeObject(obj));
}
public static Tuple<string, string> ReadFile(string fileName)
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
return JsonConvert.DeserializeObject<Tuple<string, string>>(File.ReadAllText(Path.Combine(path, fileName));
}
}
现在在您的Xamarin.Forms
项目(.NetStandard *共享项目)中,引用您创建的项目/库,您可以执行以下操作:
ReadWriteCommand = new Command(() =>
{
var someObj = Tuple.Create("Stack", "Overflow");
Common.WriteFile("SushiHangover.txt", someObj);
var readSomeObj = Common.ReadFile("SushiHangover.txt");
if ((someObj.Item1 != readSomeObj.Item1) || (someObj.Item2 != readSomeObj.Item2))
throw new Exception();
});