F#将XmlProvider数据转换为记录

时间:2016-02-25 15:54:11

标签: 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
    }

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

1 个答案:

答案 0 :(得分:5)

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

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