nAv*_*viD 2 c# multiple-inheritance razor asp.net-core blazor
我有一个 Blazor 组件,它只有一个 razor 文件(后面没有 razor.cs 代码)并希望从接口继承该组件,首先我尝试了以下操作:
MyComponent.razor :
@inherits IMyInterface
Run Code Online (Sandbox Code Playgroud)
然后在构建后,我在 .cs 生成的代码(由 Visual Studio 中)中得到一个错误,我意识到该组件仅从我的界面而不是ComponentBase类派生。这是生成的代码:
...
public partial class MyComponent: IMyInterface
{
#pragma warning disable 1998
protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
{
}
#pragma warning restore 1998
}
...
Run Code Online (Sandbox Code Playgroud)
所以我得到了“找不到合适的方法来覆盖”错误。
然后我尝试了以下代码并得到了所有这些代码的编译错误:
// 1) multiple inheritance
@inherits ComponentBase,IMyInterface
// 2) adding semicolon
@inherits ComponentBase,IMyInterface;
// 3) mutiple @inherits directive
@inherits ComponentBase
@inherits IMyInterface
Run Code Online (Sandbox Code Playgroud)
通过在文件MyComponent.razor.cs后面添加代码并在那里编写继承代码解决了问题,但我想知道是否可以在 razor 文件中具有多个接口继承?
C# 中无法实现多重继承,Blazor 模板生成 C# 类。所以你不能有inherits多个基类。但是,您可以使用@implements多个接口。
一个例子如下:
@implements IEventListener
@implements IInterface
Run Code Online (Sandbox Code Playgroud)
我想这只是对条款的混淆。你inherit是一个类,但你implement是一个接口
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |