继承组件时的 Blazor linter 问题

Blazor linter problem when inheriting a component

我有一个简单的组件叫做 BaseGrid.razor

然后我有另一个组件叫做 CustomGrid.razor

@inherits BaseGrid

...

@{
    base.BuildRenderTree(__builder);
}

...

使用 Rider 时 __builder 被标记为红色标语

cannot resolve symbol '__builder'

但项目构建得很好

将 ReSharper 与 Visual Studio

一起使用时也会出现此问题

我不知道这是 ReShaper 问题还是 Visual Studio 也有这个问题,但是看到所有文件都用红色下划线让我很头疼,因为我试图找到文件有真正的问题

在您的情况下,问题是 Razor 编译器设法解释了您编写的代码并且偶然起作用。在代码视图中 Visual Studio 不知道 __builder 存在:它只存在于 C# class 中,Razor 编译器从 Razor 文件构建。

这是您向我们展示的内容的我版本,在语法上“更”正确(不确定这是正确的表达方式,但这是我现在能想到的最好的表达方式)。它不会抛出错误,因为 Visual Studio 理解 RenderFragment.

的概念

基础网格

<h3>BaseGrid</h3>

@code {
}

网格

我将基础 BuildRenderTree 方法分配给 RenderFragment 委托,然后将组件设置为渲染渲染片段。

@inherits BaseGrid
<h3>Grid</h3>

@baseRenderFragment

@code {
    RenderFragment? baseRenderFragment;

    protected override void OnInitialized()
    {
        baseRenderFragment = base.BuildRenderTree;
    }
}

然后看起来像这样: