作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下记录
type RecordPath<'a,'b> = {
Get: 'a -> 'b
Path:string
}
我要约束
'b
成为可以在关系数据库列中自然表示的类型集的成员(
int
;
string
;
DateTime
;等)。
type String with static member CanBeUsedInRecordPath = true
然后将 SRTP 用于在
RecordPath
上运行的所有功能。 ,但是从技术上讲,有人决定扩展某种我不想使用该扩展方法支持的类型在技术上是可能的(尽管不太可能)。
最佳答案
以下似乎满足我的要求。
module RecordPath =
type RecordPath<'a, 'b> = private {
Get: 'a -> 'b
Path:string
}
with
static member Create (f: 'a -> string) = {Get = f; Path = "not important for this demo"}
static member Create (f: 'a -> int) = {Get = f; Path = "not important for this demo"}
static member Create (f: 'a -> DateTime) = {Get = f; Path = "not important for this demo"}
在接受这个作为答案之前,我会稍等片刻,以防有人想出更好的方法。
关于generics - 有没有办法将泛型类型限制为一组类型的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64416756/
我是一名优秀的程序员,十分优秀!