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

时间:2013-06-07 09:13:36

标签: c# f#

我在F#

中定义了一个界面
type IConnect =
    abstract Update: seq<DataType> -> Async<bool>

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

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

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

1 个答案:

答案 0 :(得分:3)

使用TaskIObservable。您可以在async个工作流和Task<T> quite easily之间进行转换,这是一种使用C#或大多数.Net语言的简单类型。

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