首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >netstandard20中的FSharp.Core FSharpFunc.FromConverter

netstandard20中的FSharp.Core FSharpFunc.FromConverter
EN

Stack Overflow用户
提问于 2018-01-06 02:28:14
回答 2查看 362关注 0票数 2

在将项目转换为.NET标准2.0时,FSharpFunc<T, TResult>FSharp.Core库中的FromConverter方法不再可用。有没有办法把这段代码转换成.NET标准2.0的FSharp.Core实现?

代码语言:javascript
运行
复制
async Task<Unit> RunProcess(FSharpMailboxProcessor<T> mailbox, Func<T, Task> process) { ... }

public BaseMailboxProcessor(Func<TFuncInput, Task> process, Action<Exception, TFuncInput> errorHandler = null, CancellationToken? cancellationToken = null)
{
    m_ErrorHandler = errorHandler;
    m_TokenSource = cancellationToken.HasValue ? CancellationTokenSource.CreateLinkedTokenSource(cancellationToken.Value) :
                                                 new CancellationTokenSource();
    var cancellationOption = FSharpOption<CancellationToken>.Some(m_TokenSource.Token);
    Converter<FSharpMailboxProcessor<TMailboxInput>, FSharpAsync<Unit>> converter = (mailbox) =>
    {
        return FSharpAsync.AwaitTask<Unit>(RunProcess(mailbox, process));
    };

    m_Mailbox = new FSharpMailboxProcessor<TMailboxInput>(FSharpFunc<FSharpMailboxProcessor<TMailboxInput>, FSharpAsync<Unit>>.FromConverter(converter), cancellationOption);
    m_Mailbox.Start();
}
EN

Stack Overflow用户

发布于 2018-01-07 00:19:58

你可以简单地定义你自己的:

代码语言:javascript
运行
复制
let ToFSharpFunc (converter: System.Func<_, _>) = fun t -> converter.Invoke t

此外,如果您需要在C#中使用FSharpFunc,您可以简单地对其调用.Invoke,其中FSharpFunc对象上的.Invoke是一个Func

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48119288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档