TrN*_*TrN 1 f# fluent-interface
最近我用F#开始冒险.我正在尝试创建我将在C#项目中使用的F#库.
现在我面临的问题是我有两种类型的定义(如我所愿)可以自己使用(我正在尝试为c#用法创建流畅的API).
我想如何在c#中使用它(简化示例).
Shopping shopping = new Shopping();
Stuff[] stuff = shopping.GoTo("Wallmart").Buy(new [] { "Candies", "Ice cream", "Milk" }).GoTo("Drug store").Buy(new [] { "Anvil" }).GetStuff();
Run Code Online (Sandbox Code Playgroud)
现在我有两种类型(在separted文件中):
type ShopResult(someContext: ShoppingContext) =
//some logic
member this.GoTo shopName = new ToDoResult(someContext)
type ToDoResult(someContext: ShoppingContext) =
//some logic
member this.Buy what = new ShopResult(someContext)
Run Code Online (Sandbox Code Playgroud)
现在文件顺序导致编译错误,我想知道我的案例是否有任何解决方案?还是让我放弃流畅的api想法?
将两种类型放在同一个文件中,并将定义更改为以下内容:
type ShopResult(someContext: ShoppingContext) =
//some logic
member this.GoTo shopName = new ToDoResult(someContext)
and ToDoResult(someContext: ShoppingContext) =
//some logic
member this.Buy what = new ShopResult(someContext)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅MSDN上语言参考中的 "相互递归类型"部分.