【发布时间】:2020-10-18 18:18:51
【问题描述】:
我有以下记录
type RecordPath<'a,'b> = {
Get: 'a -> 'b
Path:string
}
我想将 'b 限制为可以在关系数据库列中自然表示的类型集的成员(int;string;DateTime;等)。
我可以使用类而不是带有私有构造函数的记录和一些仅满足我关心的类型的静态创建者方法。但我想知道是否有办法通过记录来做到这一点。
我还考虑过用类似的方式扩展我想要允许的类型
type String with static member CanBeUsedInRecordPath = true
然后将 SRTP 用于在 RecordPath 上运行的所有功能,但技术上可能(尽管不太可能)有人决定使用该扩展方法扩展我不想支持的某种类型。
那么在 F# 中,具有私有构造函数的类是唯一的方法吗?
【问题讨论】: