gpt4 book ai didi

f# - 接口(interface)方法和记录属性的 XML 文档

转载 作者:行者123 更新时间:2023-12-03 07:58:59 24 4
gpt4 key购买 nike

似乎 XML 文档在大多数情况下都能正常工作,但并非总是如此。我想让 Intellisense 完全适用于设计用于与 C# 互操作的部分。所以,这里有一个小的(可能有点做作的)例子:

///<summary>Well, it's a summary</summary>
type Summary = {
///<summary>Gets a short name</summary>
Name : string;

///<summary>Gets whether the action was successful or not</summary>
IsSuccessful : bool;
}

///<summary>Represents path filtering action</summary>
type IPathFilter =
///<summary>Runs the filtering through the list of <paramref name="paths"/></summary>
///<param name="paths">A sequence of paths to check</param>
///<returns>A sequence of <see cref="Summary"/></returns>
abstract member Run : seq<string> -> seq<Summary>

///<summary>A default filter</summary>
type PathFilter =

///<summary>Runs the filtering through the list of <paramref name="paths"/></summary>
///<param name="paths">A sequence of paths to check</param>
///<returns>A sequence of <see cref="Summary"/></returns>
member this.Run paths=
paths |> Seq.map (fun s -> FileInfo(s)) |> Seq.map (fun f -> { Name = f.Name; IsSuccessful = f.Exists; })

interface IPathFilter with
///<summary>Runs the filtering through the list of <paramref name="paths"/></summary>
///<param name="paths">A sequence of paths to check</param>
///<returns>A sequence of <see cref="Summary"/></returns>
member this.Run paths =
this.Run paths

类和接口(interface)仅用于 C# 互操作,这是 F# 库中发生的所有神奇内容的外观,因此我不必将 F# 特定内容公开给 C#。如果能在 C# 端提供完整的文档就好了,这让我想到了两个问题:

  1. 有没有办法在 Intellisense 中记录和显示记录属性?如果我将鼠标悬停在类型本身上,一切正常,但属性似乎没有被拾取: Record 'class' documentation enter image description here

  2. 有没有办法对抽象方法进行“完整”描述?我知道,从 F# 方面来看,它们仅被描述为函数签名。不幸的是,这意味着如果我正在使用该接口(interface),我将获得有关该方法的不完整文档;参数名称和描述将丢失:

    Interface method doc

    与原始类文档相比: Class method doc

有什么我可以做的,还是我应该学会忍受它? :)


[编辑]

正如 Gustavo 所指出的,记录文档在 F# 端似乎工作得很好(使用 VS2012 Professional 检查):

FSharp record doc

不幸的是,相同的文档在 C# 中可见:

FSharp record doc in CSharp

:(

最佳答案

请注意,当您没有其他标签(例如 paramsreturns)时,您可以省略 summary 标签。所以这个:

///Well, it's a summary
type Summary

等同于:

///<summary>Well, it's a summary</summary>
type Summary

1)记录字段在VS2012中的作用说明:

enter image description here

2) 你可以像这样在抽象方法中使用参数名:

type IPathFilter =
abstract member Run : paths:seq<string> -> seq<Summary>

关于f# - 接口(interface)方法和记录属性的 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com