【发布时间】:2014-04-25 22:34:16
【问题描述】:
我的代码看起来像
type U0 = E1|E2|E3...
type T2 = {field1: string; field2: string; field3: string}
type T1 = T2*T2*T2
type T0 = T1*T1*T1
我想在field1 的类型上强制执行一些谓词P1,field1 和(GetUnionCases typeof<U0>).contains(field1)。我希望这不是太抽象。
为此,我想介绍 P1 类型,其定义类似于
type P1(x) = (GetUnionCases typeof<U0>).map(fun x -> x.Name).contains(x)
【问题讨论】:
-
您可以考虑使用与命名构造函数结合的保护级别,就像在this answer 中一样。