f# - FSharp.Data 可选类型抛出异常

标签 f# f#-data

我有一些 Xml,其中一个节点如下:

<code>23</code>

FSharp.Data 正确地将“代码”的类型推断为选项 int。我的问题是节点为空时如下所示:

<code />

我得到以下异常

Value is missing at <StartupCode$FSharp-Data>.$TextRuntime.GetNonOptionalValue@109-4.Invoke(String message) in C:\Git\FSharp.Data\src\CommonRuntime\TextRuntime.fs:line 109

有什么方法可以取回 Option.None 而不是抛出异常?

编辑:对于推断为选项字符串的类型,这按预期工作。

最佳答案

您尝试过 SampleIsList 吗?这是一个工作正常的示例。

#r "packages/FSharp.Data/lib/net45/FSharp.Data.dll"

#r "System.Xml.Linq"

open FSharp.Data

type Code = XmlProvider< """<samples><code>123</code><code /></samples>""", SampleIsList=true >

Code.Parse("<code>123</code>") = Some 123 //true
Code.Parse("<code />") = None //true

关于f# - FSharp.Data 可选类型抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155015/

相关文章:

c# - 无法加载文件或程序集 'System.Runtime.CompilerServices.Unsafe'

F# 过滤具有多种选项类型的记录

f# - JsonProvider<...>.Root 没有 null 作为正确的值

f# - 使用 F# Freebase 类型提供程序访问链接项目的正确方法是什么

f# - 为什么 F# 类型提供程序生成的类型不能用作函数参数?

c# - c# 类上的 f# 模式匹配

f# - 来自类型提供程序 (XmlProvider) 的约束类型

F#如何将代码引用编译为程序集

c# - 手动编写解析器的最佳方法是什么?

f# - 仅 FSharp.Data.DesignTime .NET 4.5 吗?