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
相关产品推荐
相关产品推荐

