为了创建一个Json提供者,我需要传递一个文字与路径。有几个人从不同地点开展项目工作,每种情况下的路径都不相同。 (其实只是每条路径的开始)。我试图创建一个模式匹配的文字,但编译器不接受它。有没有另一种方法来做到这一点?我可以创建一个条件文字吗?
我失败的尝试低于:
open FSharp.Data
[<Literal>]
let bitbucketRoot = // Error message: This is not a valid constant expression
let computerName = Environment.MachineName
match computerName with
| "DESKTOP-G3OF32U" -> "C:\\Users\\Fernando"
| "HPW8" -> @"H:\Dropbox\"
| _ -> failwith "Unknown computer"
[<Literal>] // Error message: This is not a valid constant expression
let projDataPath = bitbucketRoot + @"Bitbucket\VSProjects\Fractal10\Fractal10\data\"
[<Literal>] // Error message: This is not a valid constant expression
let jsonPath = projDataPath + "fractal.json"
type PathInfo = JsonProvider<Sample=jsonPath>
这不起作用 - 整个想法是在编译时需要知道文字 - 所以你不能这样做。 –