FSharp.Data 可选类型抛出异常

3

我有一些带有以下节点的Xml:

<code>23</code>

FSharp.Data能够正确推断"Code"的类型为option 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?

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


3
你可能需要包含一个示例,其中缺少这个值。 - Foole
非常准确。包括一个空代码示例可以防止异常。我原本以为类型推断为Option int就足够了。 - Kevin
@kevin 不完全是这样。在<code xsi:nil/>和不存在以及“非法”<code/>之间有微妙的区别(好吧,这取决于很多因素,但仍然如此)。更详细的信息请参见https://dev59.com/tW865IYBdhLWcg3wi_M2 这又会对从XML中推断出的内容产生影响... - Helge Rene Urholm
1个回答

0

你试过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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接