根据标题,有没有办法将F#泛型函数约束为联合类型?到目前为止我正在使用:
let toDomain<'T> external: 'T option =
assert FSharpType.IsUnion(typeof<'T>)
...
如果我尝试使用非联合,那么在运行时因System.ArgumentException而失败,但我希望先检查一下。
答案 0 :(得分:5)
没有
如果您查看IsUnion
的{{3}}并稍微遵循代码,可以归结为检查属性/参数[<CompilationMapping(SourceConstructFlags.SumType)>]
是否存在。
目前,不支持纯粹的基于属性的约束,无论是在F#还是在.NET中。