正在使用来自另一个模块的XML类型提供程序



我正在使用F#对XML文件进行分析。由于代码量越来越大,我决定将代码拆分成不同的文件。

所以我创建了一个新的文件,看起来像这样:

module Analyis
open FSharp.Data
open System
type someXml = XmlProvider<"someXMLFile.xml">
// Some Analysis functions down here

当我现在尝试使用另一个文件中的类型时,应该由类型提供者生成的子类型再也找不到了:

open Analysis
let importantFunction (data:someXml) =
let thisDoesNotWork = data.someProperty
// more code

只有当我加载函数内部的数据时,它才有效,如下所示:

open Analysis
let importantFunction =
let data = someXml.GetSample()
let nowItWorks = data.someProperty
// more code

问题:

  • 有没有具体的原因,为什么这不起作用?

  • 如何以"正确"的方式将XmlType分离到另一个文件中?

您可以将样本分离到各自的文件中。

我以以下方式使用

module infoParser =
open FSharp.Data
type jsonProvider = JsonProvider<"./schemaSamples/fileSchema.json", EmbeddedResource="Parsers, fileschema.json">
type Info (textJsonIn: string) =
let parsedInfo = jsonProvider.Parse(textJsonIn)

现在,您可以创建一个信息"实例"并访问字段。

在我的例子中,我使用C#类中的infoParser,并通过作为的构造函数调用获得实例

var info = new Info(myJsonString);

我的代码基于一个XML示例,因此应该可以满足您的需求。

最新更新