使用“async”修饰符标记 F# 方法

Ale*_*aga 1 f#

我正在尝试在 F# 中实现一种可以从 C# 中使用的方法async .. await。这是存根:

[<Extension>]
static member DoWorkAsync(value : MyValueType): Task<MyOtherType> =
    task {
        // do something and return
    }

Run Code Online (Sandbox Code Playgroud)

然而,当我从 C# 使用这个方法时,我得到

“await”表达式只能在标有“async”修饰符的方法或 lambda 中使用

用修饰符标记 F# 方法的方法是什么async

Tom*_*Tom 5

如果没有看到 C# 代码,很难判断,但听起来你正在做类似的事情:

public Task<MyOtherType> FooAsync(MyValueType v)
{
    var v = await DoWorkAsync(v);
    return new MyOtherType(v); 
}
Run Code Online (Sandbox Code Playgroud)

而以下方法可以工作:


public async Task<MyOtherType> FooAsync(MyValueType v)
//     ^^^^^
{
    var v = await DoWorkAsync(v);
    return new MyOtherType(v); 
}
Run Code Online (Sandbox Code Playgroud)