我正在使用F#对XML文件进行分析。 由于代码量越来越大,我决定将代码分成不同的文件。
所以我创建了一个新文件,看起来像这样:
module Analyis
open FSharp.Data
open System
type someXml = XmlProvider<"someXMLFile.xml">
// Some Analysis functions down here
当我现在尝试使用另一个文件中的类型时,无法再找到应该由typeprovider生成的子类型:
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分为另一个文件?
答案 0 :(得分:2)
您可以将样本分成各自的文件。
我以以下方式使用
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并通过构造函数调用as来获取实例
var info = new Info(myJsonString);
我的代码基于XML示例,因此应该满足您的需求。