在这种情况下如何使用级联类型参数?

Mus*_*tel 1 blazor blazor-server-side blazor-webassembly

Index.razor.cs:

我正在开发一个网格组件,它将显示一个项目列表:

<Grid Items="Transactions">
    <GridHeader>
        <GridColumn TItem="Transaction">ID</GridColumn>
        <GridColumn TItem="Transaction">Date</GridColumn>
    </GridHeader>
</Grid> 
Run Code Online (Sandbox Code Playgroud)

然后在 Grid.razor.cs 和 GridColumn.razor.cs 中我使用 typeparam TItem。但似乎我需要将 TITem 作为每个网格列中的参数传递,我该如何实现对类似以下内容的支持:

<Grid Items="Transactions" TItem="Transaction">
    <GridHeader>
        <GridColumn>ID</GridColumn>
        <GridColumn>Date</GridColumn>
    </GridHeader>
</Grid>   
Run Code Online (Sandbox Code Playgroud)

因此,TItem 会级联到所有子组件(无论它们嵌套的深度如何)

我查看了 CascadingTypeParam 但有关它的信息很少,所以我不确定如果它是上述解决方案,如何使用它。

Bri*_*ker 6

在 Grid.razor 顶部添加:

@attribute [CascadingTypeParameter(nameof(TItem))]
Run Code Online (Sandbox Code Playgroud)

级联类型参数

将泛型类型参数表示为级联。这允许泛型类型推断在也具有同名类型参数的后代上自动使用此类型参数值。