来自类库和xamarin.android

时间:2017-10-02 04:11:14

标签: c# json xamarin.android

更新:我之后能够获得项目的文本文件资源,其内容采用json格式。这似乎没有问题。这是传统的吗?我想问题仍然存在。

我有一个我编写并使用json文件测试过的类库。最初我把它作为项目可访问的文件。我可以反序列化它,使用它,没问题。

我已经在我的解决方案中添加了一个xamarid.android项目,开发了我的界面,连接起来,一切都很好。我还引用了我编写的早期类库,并打算在android应用程序中使用。

我执行应用程序并启动新课程后,Visual Studio停止并抱怨它无法读取相关的json文件。

这是有道理的,因为原始类库项目只是在构建时将文件输出到磁盘。 Android并不知道该位置。

我已经尝试但不起作用的事情:

构建操作:嵌入式资源/资源/编译 将文件添加为项目资源。这不起作用,因为现在Visual Studio认为该文件是二进制的,我无法反序列化它??

它的价值,错误(现在相当明显): System.IO.DirectoryNotFoundException:找不到路径的一部分" /Data/BattingAverageFlair.json"。

public List<Flair> Flair = JsonConvert.DeserializeObject<List<Flair>>(File.ReadAllText("Data/BattingAverageFlair.json"));
public string GetFlair(double averge) => Flair.First(m => averge <= m.Max && averge >= m.Min).Flairtext;

理想情况下我的类库:BattingAverageCalculator应该完全独立于我的xamarin安卓应用程序BattingAverage。

感谢您的任何指示!

1 个答案:

答案 0 :(得分:0)

除了图像和应用程序配置文件等特殊情况外,您无法在代码中打开应用程序包中的文件。

这里有两个选项:

  1. 如果您正在谈论的jSon文件是一个配置类型的文件,将用于在开发时将参数传递给应用程序。使用App.Config中的设置。

  2. 如果您正在使用某种本地存储或某种客户端应用程序数据库,则应在Android个人库文件夹中在运行时创建该文件(可能带有一些硬编码的预定义值),您可以在其中访问它稍后在代码中。

  3. 您可以在此文件夹路径中读取和写入本地存储中的文件:

    Environment.GetFolderPath(Environment.SpecialFolder.Personal)