通过使用新成员扩展现有记录来内联创建新记录类型

时间:2016-09-03 11:00:07

标签: generics types f#

在询问this question并尝试this suggested solution后,我有以下通用实体类型:

type Entity<'a> = {
    Id : Guid
    Data : 'a
}

现在,在我在API中公开它之前,我想将其展平,以便IdData中的属性可以相互序列化。我试过这个,但它没有编译:

let flatten<'a> (v : Entity<'a>) = { v.Data with Id = v.Id }

我希望实现的目的是返回一种记录类型,如果'a是例如{ foo : string; bar : int },然后flatten { Id = someGuid; Data = { foo : "baz"; bar : 42 } }将返回{ Id = someGuid; foo = "baz"; bar = 42 }(或等效的)。

有没有办法实现这一目标,还是我试图让类型系统过于动态?

0 个答案:

没有答案