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

Blazor中@inherits关键字的实例化机制疑问

Blazor组件使用@inherits时的实例化过程解析

当你在Razor组件中使用@inherits BlazorRocksBase时,组件的实例化完全由Blazor框架后台自动处理,@inherits关键字本身并不负责实例化,它的作用是让当前Razor组件编译后的类继承指定的基类。

具体细节拆解:

  • Razor组件本质是一个会被编译成C#类的文件。当你添加@inherits BlazorRocksBase后,编译器会生成一个继承自BlazorRocksBase的组件类(比如你的/blazor-rocks组件,编译后会是类似public class BlazorRocksComponent : BlazorRocksBase的类)。
  • 当Blazor框架需要渲染这个组件时,会自动创建上述编译后组件类的实例。由于子类实例化时会自动调用父类的构造函数,因此BlazorRocksBase的逻辑会被包含在组件实例中,你在Razor中访问的@BlazorRocksText,其实是当前组件实例继承自父类的属性,并非单独存在的BlazorRocksBase实例。
  • 所有继承自ComponentBase的组件(包括你的BlazorRocksBase和最终的Razor组件),其生命周期(创建、渲染、销毁等)全由Blazor框架统一管理,开发者不需要手动实例化。

用你的代码举例:
你的BlazorRocksBase继承自ComponentBase,Razor组件又继承BlazorRocksBase,最终组件类是ComponentBase的派生类。框架在渲染/blazor-rocks页面时,创建的是这个最终组件类的实例,该实例自然拥有BlazorRocksBase中定义的BlazorRocksText属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:50:04