Blazor 剃刀文件中接口的多重继承

Mutiple inheritance of Interfaces in Blazor razor file

我的 Blazor 组件只有一个 razor 文件(后面没有 razor.cs 代码)并希望从接口继承该组件,首先我尝试了以下操作:

MyComponent.razor :

  @inherits IMyInterface

然后在构建之后,我在 .cs 生成的代码中遇到了一个错误(由 Visual Studio),我意识到组件只是从我的界面派生的,而不是 ComponentBase class。这是生成的代码:

...
public partial class MyComponent: IMyInterface
    {
        #pragma warning disable 1998
        protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
        }
        #pragma warning restore 1998
    }
...

所以我得到了 'no suitable method found to override' 错误。

然后我尝试了以下代码,但都遇到了编译错误:

// 1) multiple inheritance
@inherits ComponentBase,IMyInterface

// 2) adding semicolon 
@inherits ComponentBase,IMyInterface;

// 3) mutiple @inherits directive
@inherits ComponentBase
@inherits IMyInterface

通过在文件 MyComponent.razor.cs 后面添加代码并在其中写入继承代码解决了问题,但我想知道 是否可以在 razor 文件中有多个接口继承?

C# 中无法实现多重继承,Blazor 模板生成 C# classes。所以你不能 inherits 多个碱基 classes。但是,您可以 @implements 多个接口。

示例如下:

@implements IEventListener
@implements IInterface

我想这只是对术语的混淆。你 inherit 一个 class 但你 implement 一个接口