zoukankan      html  css  js  c++  java
  • 为什么C#接口中不能声明async异步函数(转载)

    Unable to declare Interface “ async Task<myObject> MyMethod(Object myObj); ”


    I'm unable to declare

    interface IMyInterface
    {
       async Task<myObject> MyMethod(Object myObj);
    }

    The compiler tells me:

    • The modifier async isn't valid for this item
    • The async modifier can only be used for methods that have a body

    Is this something that should be implemented, or does the nature of async & await prohibit this from ever occurring?

    答1


    Whether a method is implemented using async/await or not is an implementation detail. How the method should behave is a contract detail, which should be specified in the normal way.
    Note that if you make the method return a Task or a Task<T>, it's more obvious that it's meant to be asynchronous, and will probably be hard to implement without being asynchronous.

    From How to force async child overrides in C# 5.0

    答2


    Whether or not your implementation is async, has no relevance to your interface. In other words, the interface cannot specify that a given method must be implemented in an asynchronous way.
    Just take async out of your interface and it will compile; however, there is no way to enforce asynchronous implementation just by specifying an interface.

    原文链接

  • 相关阅读:
    AAA
    Express4 启航指南
    nodejs 中的 NODE_PATH
    Windows 系统下设置Nodejs NPM全局路径
    C# VS Java
    在windows环境中使用varnish
    各种数据类型对比
    RubyGems 镜像
    npm国内镜像介绍
    WCF 身份验证 通过检查客户端IP
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/12259777.html
Copyright © 2011-2022 走看看