You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承FluentUI Blazor DataGrid遇CS0411错误求解决方法

如何继承FluentUI Blazor DataGrid并解决CS0411错误?

尝试继承FluentUI Blazor的FluentDataGrid组件时触发了CS0411错误,具体错误信息如下:

CS0411
无法从用法中推断方法'TypeInference.CreatePropertyColumn_7<TGridItem, TProp>(RenderTreeBuilder, int, int, Expression<Func<TGridItem, TProp>>, int, bool?, int, Align)'的类型参数。
请尝试显式指定类型参数

相关代码如下:

InheritGrid.razor

@typeparam TItem
@inherits FluentDataGrid<TItem>

@{ 
      base.BuildRenderTree(__builder);
}

InheritGrid.razor.cs

namespace TishtarUI.Test
{
    public partial class InheritGrid<TItem> : FluentDataGrid<TItem>
    {
    }
}

Home.razor

<InheritGrid Items="@Persons" TGridItem="Person">
   <PropertyColumn Property="@(p => p.FirstName)" Sortable="true" Align="Align.Start" />
</InheritGrid>

解决方案

该错误源于PropertyColumn无法自动推断TGridItem类型——自定义的InheritGrid没有将泛型参数正确传递给子组件。以下两种方法可解决问题:

方法一:显式指定PropertyColumn的TGridItem类型

在使用PropertyColumn时手动声明TGridItem类型,让编译器明确推断:

<InheritGrid Items="@Persons" TGridItem="Person">
   <PropertyColumn TGridItem="Person" Property="@(p => p.FirstName)" Sortable="true" Align="Align.Start" />
</InheritGrid>

方法二:封装自定义PropertyColumn组件

创建与自定义Grid绑定的InheritPropertyColumn,自动关联父组件的泛型参数,无需每次手动指定:

InheritPropertyColumn.razor

@typeparam TItem
@inherits PropertyColumn<TItem>

InheritPropertyColumn.razor.cs

namespace TishtarUI.Test
{
    public partial class InheritPropertyColumn<TItem> : PropertyColumn<TItem>
    {
    }
}

之后在Home.razor中使用自定义列组件:

<InheritGrid Items="@Persons" TGridItem="Person">
   <InheritPropertyColumn Property="@(p => p.FirstName)" Sortable="true" Align="Align.Start" />
</InheritGrid>

额外提示

若自定义Grid无需添加额外逻辑,建议直接使用原生FluentDataGrid。若必须继承,需确保所有子组件的泛型参数与父组件正确关联,避免类型推断失败。

内容的提问来源于stack exchange,提问作者Payam Soltani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:27:17