将 F# 泛型函数约束为联合类型?
Constraining an F# generic function to a union type?
根据标题,有什么方法可以将 F# 泛型函数限制为联合类型?到目前为止我正在使用:
let toDomain<'T> external: 'T option =
assert FSharpType.IsUnion(typeof<'T>)
...
如果我尝试使用 non-union,它会在运行时以 System.ArgumentException 失败,但我更希望早点检查。
没有
如果您查看 IsUnion
的 implementation 并稍微遵循代码,它归结为检查是否存在 attribute/argument [<CompilationMapping(SourceConstructFlags.SumType)>]
。
目前不支持纯基于属性的约束,无论是在 F# 还是在 .NET 中。
根据标题,有什么方法可以将 F# 泛型函数限制为联合类型?到目前为止我正在使用:
let toDomain<'T> external: 'T option =
assert FSharpType.IsUnion(typeof<'T>)
...
如果我尝试使用 non-union,它会在运行时以 System.ArgumentException 失败,但我更希望早点检查。
没有
如果您查看 IsUnion
的 implementation 并稍微遵循代码,它归结为检查是否存在 attribute/argument [<CompilationMapping(SourceConstructFlags.SumType)>]
。
目前不支持纯基于属性的约束,无论是在 F# 还是在 .NET 中。