【发布时间】:2015-07-02 06:29:52
【问题描述】:
我正在尝试在 F# 中创建给定类型的原始值。代码如下所示,但它不起作用。提前感谢所有帮助和感谢。
open System
let getvalue (t: Type) (v: string) : obj =
match box t with
| :? int -> let r = (int) v
box r
| :? byte -> let r = (byte) v
box r
| :? sbyte -> let r = (sbyte) v
box r
| :? int16 -> let r = (int16) v
box r
| :? uint32 -> let r = (uint32) v
box r
| :? int64 -> let r = (int64) v
box r
| :? uint64 -> let r = (uint64) v
box r
| :? double -> let r = (double) v
box r
| :? float32 -> let r = (float32) v
box r
| :? decimal -> let r = (decimal) v
box r
| :? char -> let r = (char) v
box r
| :? string -> v :> obj
| _ ->
let s = sprintf "Error unknown type %A" t
raise (ApplicationException(s))
【问题讨论】:
-
它到底是怎么不起作用的?还有,它是如何使用反射的?
-
它只是不属于任何模式。
-
当你问问题时,永远不要写 - “它不起作用”。清楚地解释问题和期望的行为
标签: f#