用于可区分联合类型的 F# 自定义泛型 dapper TypeHandler

F# Custom generic dapper TypeHandler for Discriminated Union Types

提问人:Priyanka Jain 提问时间:11/16/2023 更新时间:11/17/2023 访问量:38

问:

我正在尝试为可区分的联合类型编写一个自定义的通用 Dapper TypeHandler。

有关参考,请参阅以下问题:F# 联合类型的 Dapper 泛型类型处理程序

我无法在不遇到静态强制限制的情况下编写 Parse 方法。

一个非泛型类型处理程序,它的工作原理是:

type DapperIdTypeHandler() =
    inherit SqlMapper.TypeHandler<Id>()

    override this.SetValue(parameter, Id id) = parameter.Value <- id

    override this.Parse(value) = Id(value :?> Guid)

我想知道有没有办法以通用方式编写解析方法?

下面是不起作用的泛型函数的代码片段:

type DapperUnionTypeHandler<'t>() =
    inherit SqlMapper.TypeHandler<'t>()
    override x.Parse(value) =
        // Stuck at this step
        't <| (value :?> Guid)

    override this.SetValue(param, value) =
        param.Value <- value
        ()

我正在使用的接头类型:

type Id =
    | Id of Guid
泛型 F# dapper discriminated-union

评论


答: 暂无答案