c# - .NET Core DI 属性中的异步提供程序
问题描述
关于这个主题和答案,我有用于异步服务注册的适配器: Async provider in .NET Core DI
它看起来非常好。但是我有一些服务,我在界面中有属性。属性不能是异步的,但我需要等待客户端对象:var client = await this.connectedClient.Value;
我的意思是我不能使用public bool Connected => (await this.connectedClient.Value).Connected;
在这种情况下我该怎么办?
public interface IMyAppService
{
bool Connected{ get; }
string Host{ get; }
Task<Data> GetData();
Task SendData(Data data);
}
PS:我不想.Result
等等.GetAwaiter().GetResult()
。我知道那里可能会陷入僵局
解决方案
鉴于 Steven 在链接问题中建议的适配器结构,您可以简单地将Connected
属性实现为:
public bool Connected => this.connectedClient.IsValueCreated;
但在一般情况下,无法在属性 getter 或 setter 中异步运行代码。
推荐阅读
- java - 为什么永远无法达到收集方法中的此 BiConsumer 组合器代码?
- sql-server - 使用作为游标执行的字符串的 SQL
- r - 有没有办法在 R 中更改 ggplot2 (geom_point) 中的大小值范围?
- python - 计算每个值的出现次数并对 Pandas 中的另一列求和
- python - 如何在标签中显示计时器中剩余的当前时间?
- assembly - ARM SUBS 指令中 C 标志的行为
- c++ - C++ unordered_map operator[ ] vs unordered_map.find() 性能
- xamarin - webview xamarin 表单无法在 redicted 网站(ios 和 android)上播放视频
- php - 无法访问模型 Codeigniter 中的数组数据
- android - Java泛型:将多种类型传递给钻石