首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示fsi中函数的文档

显示fsi中函数的文档
EN

Stack Overflow用户
提问于 2018-12-18 23:23:42
回答 1查看 93关注 0票数 2

有没有办法让fsi打印函数的文档?

我可以通过将函数计算为一个值来检索类型,但我想知道xml文档是否存在。

EN

回答 1

Stack Overflow用户

发布于 2018-12-19 14:33:42

在没有用例的情况下,我有两个建议。如果这仅仅是关于帮助,那么使用和FSX文件。

如果您实际上想要打印出FSI中的文档,那么可以使用以下代码来打印成员的文档。由于xml注释不存储在dll中,因此此代码将检查dll所在位置是否存在xml文档,如果存在,则将其加载。

代码语言:javascript
复制
#r "packages/Newtonsoft.Json/lib/net45/Newtonsoft.Json.dll"

open System.IO
open System.Xml
open System.Reflection

let loadXml (path:string) =
  if (File.Exists(path)) then 
    let xml = new XmlDocument()
    xml.Load(path)
    Some xml
  else None

let xmlForMember (maybeXml:XmlDocument option) (mi:MemberInfo) =
  let path = sprintf "M:%s.%s" mi.DeclaringType.FullName mi.Name
  match maybeXml with
  | None -> None
  | Some xml -> xml.SelectSingleNode("//member[starts-with(@name, '" + path + "')]") |> Some

let docFrom (node:XmlNode option) =
  match node with
  | None -> "No docs available"
  | Some n -> n.InnerXml

用法可能如下所示,但您可以根据需要对其进行整理和打包:

代码语言:javascript
复制
let t = typedefof<Newtonsoft.Json.JsonSerializer>
let assembly = t.Assembly
let dllPath = assembly.Location
printfn "Assembly location: %s" dllPath
let expectedXmlPath = Path.ChangeExtension(dllPath, ".xml")
printfn "Expected xml: %s" expectedXmlPath
let xmlDoc = expectedXmlPath |> loadXml
let mi = t.GetMember("Create").[0]

let docNode = mi |> xmlForMember xmlDoc

docNode |> docFrom |> printfn "%s"

希望这篇文章能帮你入门。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53836201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档