如何定义可以在c#中实现的异步f#接口?

Rem*_*mko 5 c# f#

我在F#中定义了一个接口

type IConnect =
    abstract Update: seq<DataType> -> Async<bool>
Run Code Online (Sandbox Code Playgroud)

我希望在同一appdomain中的其他应用程序实现它,以便我可以在实现接口的任何实现上调用Update(我在TinyIoC容器中收集实现).返回类型Async<bool>可以指示更新是否成功,而不必等待它.我可以并行更新应用程序.

其他应用程序是用c#编写的,当我开始编写一个引用(模拟)实现时,我意识到这需要任何实现者使用一个FSharpAsync不太漂亮的类型.

那么,我如何定义接口,以便在c#中轻松实现并保持异步方面?

Lea*_*and 3

使用Task或者IObservable。您可以轻松地在工作流程之间进行转换并且async它是一种可以在 C# 或大多数 .Net 语言中使用的简单类型。Task<T>

type IConnect = abstract Update: seq<DataType> -> Task<bool>
Run Code Online (Sandbox Code Playgroud)