我正在研究.NET Core。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
CreateHostBuilder
方法返回IHostBuilder
接口,并调用该接口的Build
方法。 那么是否可以在该接口内实现代码,或者它是任何设计模式?
CreateHostBuilder 方法返回类型,在该返回类型上实现接口 IHostBuilder 和 Build 方法正在被调用。
该类不是密封的,但 Build 不是虚拟的,因此扩展它有点挑战。但是,您始终可以包装对象并在包装器中实现接口,通过控件或覆盖或扩展所需的任何行为。
public class MyHostBuilder : IHostBuilder
{
protected readonly IHostBuilder _inner;
public MyHostBuilder(IHostBuilder inner)
{
_inner = inner;
}
public IHost Build()
{
DoSomethingCustom();
return _inner.Build(); //Do something custom then pass through
}
public void ConfigureContainer<TContainerBuilder>(Action<HostBuilderContext,TContainerBuilder> action)
{
_inner.ConfigureContainer(action); //Pass through without extending
}
}