如何在 blazor 页面模型部分声明中使用不同的基础 class?

How to use a different base class in blazor page model partial declaration?

我正在尝试以某种方式在客户端 Blazor 中使用页面模型 class,这样我就不必重新键入所有 "base" 属性

我正在考虑创建 class

public partial class SomePage : BasePage
{ }

错误 CS0263 'Somepage' 的部分声明不得指定不同的基 classes

我的基地 classe 看起来像这样

 public class BasePage : ComponentBase
    {
        [Inject]
        protected NavigationManager NavigationManager { get; set; }

        [Inject]
        protected HttpClient Http { get; set; }

    }

我还尝试更改添加 IComponent、IHandleEvent、IHandleAfterRender 所以看起来像这样

 public class BasePage : ComponentBase, IComponent, IHandleEvent, IHandleAfterRender

但这并没有帮助。

关于如何从 PageModel 部分声明中的基础 class 继承的任何想法?

这是关于C#如何实现部分classes。

在 SomePage.razor 中,您必须添加

@inherits BasePage 

与错误状态一样,部分 class 的所有部分必须指定相同的基数 class(或 none,然后是另一部分的基数 class将被使用)。

您的 SomePage.razor 文件首先编译为 C#,生成器将默认指定 ComponentBase 作为基础 class。 由于您无法告诉生成器省略基数 class,因此您必须使用 @inherits 来覆盖它。

因此,您可以(但不必)将后面的 class 缩短为

 partial class SomePage  // code-behind
 {
 }

public 修饰符和基础class 将从生成的部分中取出。