【问题标题】:Async provider in .NET Core DI properties.NET Core DI 属性中的异步提供程序
【发布时间】:2021-05-16 00:33:57
【问题描述】:

关于这个主题和答案,我有用于异步服务注册的适配器: 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() 等。我知道它可能会陷入僵局

【问题讨论】:

    标签: c# .net asp.net-core


    【解决方案1】:

    鉴于 Steven 在链接问题中建议的适配器结构,您可以简单地将 Connected 属性实现为:

    public bool Connected => this.connectedClient.IsValueCreated;
    

    但在一般情况下,无法在属性 getter 或 setter 中异步运行代码。

    【讨论】:

    • 谢谢。不幸的是,Connected 与 connectedClient 无关。它与另一个内部客户有关。而且我在课堂上有很多属性,这里有两个只是例子。
    猜你喜欢
    • 2017-08-31
    • 2021-06-11
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多