Blazor分部类继承ComponentBase派生基类报CS0115、CS0263错误如何处理?
错误产生原因
两个编译错误的核心根源是同一个分部类Something的两个部分(.razor编译生成的自动代码、.razor.cs手写的代码)指定了不同的基类:
- Blazor框架在编译
.razor文件时,默认会给自动生成的Something分部类隐式指定基类为ComponentBase - 你在
Something.razor.cs里手动给同一个Something分部类指定基类为SomethingBase
编译器识别到同一个分部类存在两个不同的基类声明,直接抛出CS0263错误。而CS0115是衍生错误:Blazor会自动为组件生成BuildRenderTree方法,该方法默认是重写ComponentBase中的对应方法,基类不一致时找不到可重写的匹配方法,因此抛出该错误。
你直接让Something继承ComponentBase时,和.razor自动生成的基类一致,因此不会触发冲突。
解决方案
只需要统一两个分部类的基类声明即可,推荐按以下步骤操作:
- 在
something.razor文件的第一行添加声明:@inherits SomethingBase
显式指定Razor侧生成的分部类基类为SomethingBase,和代码后置文件的基类保持一致 - 额外检查项:
- 确认
SomethingBase类是public访问修饰符,且确实继承自ComponentBase - 确认分部类
Something的两个部分的访问修饰符完全一致,类名大小写完全匹配 - 确认
.razor文件名和代码后置文件名的类名部分大小写匹配,避免编译时无法关联两个分部类
- 确认
内容的提问来源于stack exchange,提问作者Power5000
相关产品推荐
相关产品推荐

