看到一个针对在 C# 中生成的大型 Excel 文件的解决方案,该解决方案运行良好,但一直在努力将 Func<List> getList) 部分转换为 F#。

    public class ElementListProxy : OpenXmlElementList
    {
        private readonly List<OpenXmlElement> _list;

        public ElementListProxy (Func<List<OpenXmlElement>> getListFunc)
        {
            _list = getListFunc ();
        }

        public override OpenXmlElement GetItem (int index)
        {
            return _list.Skip(index).FirstOrDefault ();
        }

        public override IEnumerator<OpenXmlElement> GetEnumerator ()
        {
            return _list.GetEnumerator ();
        }

        public override int Count => _list.Count;
    }
}

试过这个但不对:


type Delegate1 = delegate of unit -> ResizeArray<OpenXmlElement>

type ElementListProxy () =
    inherit OpenXmlElementList ()
    member val private _list : ResizeArray<OpenXmlElement> = null with get, set
    

    override this.GetEnumerator () = 
        this._list.GetEnumerator ()

    override this.GetItem (index : int) = 
        this._list.Skip(index).FirstOrDefault ()
    new (getList : Delegate1 ) as this =
        this._list <- getList ()