【问题标题】:Func Chain - Method Name ExpectedFunc 链 - 需要方法名称
【发布时间】:2018-02-13 06:38:24
【问题描述】:

我的意图是在 Func 中链接几个方法并一个一个地执行它们以获得有关 Function 执行成功与否的响应。下面是我的代码,但在从 GetInvocationList 获取它后无法调用 func,因为它需要一些方法名称。请建议修复它...

            Func<bool> funcList = null;
            funcList += Init;
            funcList += Process;
            foreach(var func in funcList.GetInvocationList()) {
                bool execuationStatus = func();

            }

【问题讨论】:

    标签: c# .net delegates func


    【解决方案1】:

    将您的方法更改为:

    Func<bool> funcList = null;
                funcList += Init;
                funcList += Process;
                foreach (var func in funcList.GetInvocationList())
                {
                    var fn = func as Func<bool>;
                    bool execuationStatus = fn();
                }
    

    GetInvokationList 返回 Delegate[] 并且您不能调用它。委托类与委托关键字之间存在差异。根据 MSDN 文档:

    Delegate 类是委托类型的基类。然而,只有 系统和编译器可以从 Delegate 类显式派生 或来自 MulticastDelegate 类。也是不允许的 从委托类型派生新类型。委托类不是 被认为是委托类型;它是一个用于派生委托的类 类型。

    大多数语言都实现了一个委托关键字,以及用于这些关键字的编译器 语言能够从 MulticastDelegate 类派生; 因此,用户应使用由 语言。

    【讨论】:

    • 如果一个函数返回false,如何再次调用这个函数??
    • @JosephCenk 我想我没有得到你的问题。你能解释一下吗
    • 如果进程有任何异常,我该如何再次重复这个函数
    • 虽然我没有关于您尝试实现的目标的背景知识,但它似乎是围绕异常处理和重试策略的广泛主题。比如你想重复什么例外,任何?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多