当前位置:  开发笔记 > 程序员 > 正文

将列表转换为我的类型的实例

如何解决《将列表转换为我的类型的实例》经验,为你挑选了1个好方法。

我有类似的声明:

[] 
type Defect = 
    {
        []
        Referenceid  : string
        []
        Comment : string
        []
        Start : DateTime
        []
        Finish : DateTime
    }

这种类型有4个字段.我有4个元素的列表.我有其他类型的n字段.我列出了n元素.

是否存在通过这种方式从列表中创建我的类型实例的通用方法,因此列表中的每个元素都将是该类型的对应字段?



1> scrwtp..:

您可以使用反射创建记录类型的实例.请考虑以下代码:

let make<'record> (values: obj []) = 
    let typ = typeof<'record>
    let fieldInfos = FSharpType.GetRecordFields(typ)

    let orderedValues = 
        // here you might need to reorder values using fieldInfos
        ...

    FSharpValue.MakeRecord(typ, values) :?> 'record 

唯一可能棘手的是以正确的顺序获取值,以便它们最终出现在正确的字段中.

我相信你想要的顺序是声明的顺序,但如果你的列表中的值用字段名称标记,你可能想要实现那个排序逻辑,只是为了安全起见.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有