使用FSharp.Data JsonProvider修改构建为已擦除类型的记录

时间:2014-10-20 13:51:35

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

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

type ThisRecord = JsonProvider<"ThisRecord.json">

这是一个非常深刻和复杂的,但为了简化,我们说它有两个属性:

{
    Prop1 = "prop1"
    Prop2 = 2
}

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

let modified = {sample with Prop2 = -3}

使用JsonProvider创建的已擦除类型似乎无法实现。

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

1 个答案:

答案 0 :(得分:1)

我不知道有什么更简单的方法。在我的情况下,我不得不采取以下措施:

  1. 明确定义我自己的记录类型
  2. 将数据从JsonProvider的擦除类型复制到我自己的类型
  3. 在我的代码中使用我的类型。
  4. 我不是说这是一个理想的解决方案。但是,我认为这就是我们留下的东西。与JsonProvider自动生成的擦除类型分开定义您自己的“业务对象”可以解决您提到的问题和您未提及的另一个问题:擦除类型不适用于基于反射的API。