【发布时间】:2021-06-09 07:26:22
【问题描述】:
我有一个 Blazor 页面,需要在不同情况下以不同方式呈现。我目前正在使用一个非常大的“if”语句来在两者之间做出决定,但这非常笨拙。我不想复制/粘贴代码背后的重要逻辑。有没有办法让 2 个不同的 UI 页面基于相同的代码?
我尝试过有 2 个不同的页面,后面有代码,然后继承一个包含所有逻辑的基类,就像这样。
public partial class MyPageHorizontal : MyPageLogic
{
}
public partial class MyPageVertical : MyPageLogic
{
}
public partial class MyPageLogic : ComponentBase
{
//logic and properties go here
}
我收到错误“基类与其他部分中声明的不同”
【问题讨论】:
-
你为什么不创建一个基类(直接用于 .razor 后端)有 2 个不同的孩子(分离)?
-
如果您有与这些“页面”关联的 Razor 文件,请检查背后生成的代码以查看它们继承自什么 - 这听起来像是基类之间的不匹配 - 但我从未在 Blazor 中看到该消息之前,所以我怀疑你已经简化了问题?绝对支持继承基础组件。
-
@AliBorjian 这就是我在代码 sn-p 中显示的内容。它给出了我提到的构建错误
-
@MisterMagoo Blazor 页面已经从 ComponentBase 下降了。这就是为什么后面的代码是部分类而不是常规类的原因。如果您从 ComponentBase 生成类后的代码,您可以看到这一点,并且您会看到警告“基本类型 'ComponentBase' 已在其他部分中指定”。如果我试图让后面的代码继承自我自己的基础,它看起来像是编译器的多重继承。
-
好的,这是一个例子——你的实现有什么不同? blazorrepl.com/repl/GFkAkjas06Oj2zPF17