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

本文关键字:实现 异步 接口 定义 何定义 一个 | 更新日期: 2023-09-27 18:17:17

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

type IConnect =
    abstract Update: seq<DataType> -> Async<bool>

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

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

那么,我如何定义接口,使其易于在c#中实现,并保持异步方面?

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

使用Task或者IObservable。你可以很容易地在async工作流和Task<T>之间转换,它是一个简单的类型,可以在c#或大多数。net语言中使用。

type IConnect = abstract Update: seq<DataType> -> Task<bool>