f# - XDocument 构造函数上的 ParamArray 问题
问题描述
XDocument
有一个重载的构造函数。
XDocument()
XDocument([ParamArray] content: obj[])
XDocument(XDocument)
XDocument(XDeclaration,[ParamArray] content: obj[])
所以当我尝试创建一个XDocument
new XDocument(
new XDeclaration("1.0", "utf-8", "no"),
new XElement(XName.Get "Foo"))
它给了我错误
方法 XDocument 的独特重载...
我假设它无法确定是否使用
XDocument([ParamArray] content: obj[])
或者
XDocument(XDeclaration,[ParamArray] content: obj[])
我如何强制它选择正确的?
解决方案
啊……我找到了答案
https://nbevans.wordpress.com/2015/04/15/super-skinny-xml-document-generation-with-f/
let XDeclaration version encoding standalone = XDeclaration(version, encoding, standalone)
let XLocalName localName namespaceName = XName.Get(localName, namespaceName)
let XName expandedName = XName.Get(expandedName)
let XDocument xdecl content = XDocument(xdecl, content |> Seq.map (fun v -> v :> obj) |> Seq.toArray)
let XComment (value:string) = XComment(value) :> obj
let XElementNS localName namespaceName content = XElement(XLocalName localName namespaceName, content |> Seq.map (fun v -> v :> obj) |> Seq.toArray) :> obj
let XElement expandedName content = XElement(XName expandedName, content |> Seq.map (fun v -> v :> obj) |> Seq.toArray) :> obj
let XAttributeNS localName namespaceName value = XAttribute(XLocalName localName namespaceName, value) :> obj
let XAttribute expandedName value = XAttribute(XName expandedName, value) :> obj
即看起来我必须将我的内容显式转换为对象数组,以便它可以选择正确的重载。
推荐阅读
- flutter - 从 Flutter 中的文本小部件中删除多余的填充
- javascript - 如果键不存在则插入对象
- python - 如何有条件地从熊猫数据框列中删除元音?
- python - 如何保存一个
? 我需要保存一个 作为图像或 HTML 文件 - powershell - Powershell:PSSQLITE:不支持复杂的 SQL
- typescript - 关闭接口的 eslint 规则?
- arm - qemu-system-aarch64:-device ramfb:“ramfb”不是有效的设备型号名称
- php - 带有消息“没有这样的文件或目录”的 mysqli_sql_exception
- permissions - 为什么 git 需要 sudo 权限才能克隆,如果需要,写入根目录?
- http - 带有图像附件的 Julia HTTP POST 请求