继承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
相关产品推荐
相关产品推荐

