可以指定一个可以由 类 使用同步或异步方法实现的 Dart 接口吗?
Can one specify a Dart interface that may be implemented by classes with either sync or async methods?
对于使用远程服务的 Dart 组件,我首先将 Dart 服务接口定义为抽象 class(例如抽象 class XService)和模拟 class(class XServiceMock 实现了 XService),同步方法实现了我用来测试组件的服务 API。我现在开始实现真正的代理(class XServiceImpl 实现 XService),它的几个方法使用了“await/async”语言特性。 “await”要求包含的方法用异步注释,这需要 return 类型的 Future 并使其与 XService 中的方法签名冲突。我希望能够在不修改组件源代码的情况下注入模拟代理或真实代理。这可以做到吗?如何做到?
XService (api)
XServiceMock implements XService (sync methods only)
XServiceImpl implements XService (mixture of async and sync methods)
这是不可能的。您可以做的是指定异步接口并从同步代码返回未来。
return new Future.value(someReturnValue);
对于使用远程服务的 Dart 组件,我首先将 Dart 服务接口定义为抽象 class(例如抽象 class XService)和模拟 class(class XServiceMock 实现了 XService),同步方法实现了我用来测试组件的服务 API。我现在开始实现真正的代理(class XServiceImpl 实现 XService),它的几个方法使用了“await/async”语言特性。 “await”要求包含的方法用异步注释,这需要 return 类型的 Future
XService (api)
XServiceMock implements XService (sync methods only)
XServiceImpl implements XService (mixture of async and sync methods)
这是不可能的。您可以做的是指定异步接口并从同步代码返回未来。
return new Future.value(someReturnValue);