You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HostBuilder.Build()返回的IHost实例具体属于哪个实现类?

关于HostBuilder.Build()返回的IHost实例所属类的问题
  • 首先明确:所有接口的实例都必须来自实现该接口的具体类,IHost也不例外,Build()返回的对象肯定是某个实现了IHost接口的类的实例——这是C#接口的基本特性,接口本身无法被直接实例化。

  • 具体到Microsoft.Extensions.Hosting框架,HostBuilder.Build()返回的是内部类Microsoft.Extensions.Hosting.Internal.Host的实例。这个类是框架内部实现的,被标记为internal,所以你在自己的代码里无法直接引用或手动实例化它,只能通过HostBuilder的工厂方法来获取实例。

  • 框架采用这种设计的核心目的是封装内部实现细节:开发者只需要依赖IHost接口定义的契约(比如StartAsync()、StopAsync()等方法),不用关心具体的实现逻辑。这样微软后续可以修改Host类的内部实现,只要IHost接口的定义不变,你的代码就不需要做任何调整。

  • 如果你想验证这个结论,可以在代码里打印实例的类型:

    var host = Host.CreateDefaultBuilder().Build();
    Console.WriteLine(host.GetType().FullName);
    

    运行后会输出Microsoft.Extensions.Hosting.Internal.Host,直接确认具体的类。

内容的提问来源于stack exchange,提问作者Elon Obama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:42:50