【问题标题】:Modify a record built as erased type with FSharp.Data JsonProvider使用 FSharp.Data JsonProvider 修改构建为擦除类型的记录
【发布时间】:2014-10-20 13:51:34
【问题描述】:

我有一个使用 JsonProvider 创建的类型:

type ThisRecord = JsonProvider<"ThisRecord.json">

这是一个相当深刻和复杂的问题,但为了简化,假设它有两个属性:

{
    Prop1 = "prop1"
    Prop2 = 2
}

出于测试目的,我想通过仅修改一两个属性的给定样本轻松创建新样本。对于正常记录,它将是:

let modified = {sample with Prop2 = -3}

这对于使用 JsonProvider 创建的已擦除类型似乎是不可能的。

是否存在任何更简单的方法来构建给定提供类型的修改版本,还是我必须为每个测试用例创建新的 *.json 文件?

【问题讨论】:

    标签: f# type-providers f#-data


    【解决方案1】:

    我不知道任何更简单的方法。就我而言,我不得不采取以下措施:

    1. 明确定义我自己的记录类型
    2. 将 JsonProvider 的已擦除类型中的数据复制到我自己的类型中
    3. 在我的代码中使用我的类型。

    我并不是说这是一个理想的解决方案。但是,我认为这是我们剩下的。将您自己的“业务对象”与 JsonProvider 的自动生成的已擦除类型分开定义可以解决您提到的问题和您未提及的另一个问题:已擦除类型不适用于基于反射的 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多