【问题标题】:How to define an async f# interface that can be implemented in c#?如何定义一个可以在c#中实现的异步f#接口?
【发布时间】:2013-06-08 22:16:35
【问题描述】:

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

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

我希望同一 appdomain 中的其他应用程序实现它,以便我可以在任何实现接口的应用程序上调用 Update(我将实现收集在 TinyIoC 容器中)。返回类型Async&lt;bool&gt; 可以指示更新是否成功,无需等待。而且我可以并行更新应用程序。

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

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

【问题讨论】:

    标签: c# f#


    【解决方案1】:

    使用TaskIObservable。您可以在async 工作流和Task&lt;T&gt; quite easily 之间进行转换,它是在C# 或大多数.Net 语言中使用的简单类型。

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

    【讨论】:

    • 谢谢,Async.AwaitTask: Task&lt;'a&gt; -&gt; Async&lt;'a&gt; 似乎工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多