所以我有这个代码:
type Zero = One = 1 | Two = 2 | Three = 3
type Four = Five = 5 | Six = 6 | Seven = 7
let test_1 (x : bool) : Type =
if x
then typeof<Zero>
else typeof<Four>
let test_2 () =
let ty = test_1 true
let e = enum<ty>(1)
...
但是在最后一行,我收到一个错误:Type ty not defined.
有什么建议么?
编辑:
或者可能是这样的:
let test_3 (x : bool) (i : int) : obj =
if x
then enum<Zero>(i) :> obj
else enum<Four>(i) :> obj
我在想有什么方法可以恢复类型安全吗?
也许是这样的?
let test_4 (x : bool) (i : int) : obj * Type =
if x
then enum<Zero>(i) :> obj, typeof<Zero>
else enum<Four>(i) :> obj, typeof<Four>
然后像这样使用它:
let test_5 () =
let v,t = test_4 true 1
let o = v :?> t
...
这在未定义 t 的最后一行抱怨。
基本上,我想要做的是能够返回这些不同的枚举,而无需将零和四包装到 DU 中。