F#将XmlProvider数据转换为记录

jac*_*ott 0 f# type-providers

我使用XmlProvider提取一些XML数据,我将从C#访问它.由于您不能直接从C#使用类型提供的字段,我需要创建它们的记录.我可以手工完成这个,但我相信这应该可以自动使用反射.如果我创建记录类型具有相同的名称和类型,在类型提供商的领域,我应该能够使用像FSharpValue.MakeRecord(typeof<MyType>,values) 这里values是对象的数组.

我不知道的是如何从类型提供程序中获取值数组,以及如何处理嵌套记录,例如:

    type Address =
    {
        Address1     : string
        City         : string
        State        : string
    }

    type Client =
    {
        Id        : int            
        FullName  : string
        Address   : Address
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,客户端包含一个地址 我是否需要走树并在树叶上使用MakeRecord并继续工作?

Fyo*_*kin 5

如果您愿意手动编写类型代码,为什么首先需要类型提供程序?

如果你在F#端做一些额外的逻辑,你别无选择,只能手动创建记录.如果您没有做任何事情,您可以使用.NET开箱即用的序列化程序(或其他库)从xml创建它们.