具有级联参数的 Blazor

问题描述 投票:0回答:1

我正在尝试创建一个具有通用类型的组件来操作任何类型的数据。

我想在 MyComponent 级别定义我的通用类型,并在 Child 级别访问我的通用类型,而无需在 标记中定义它。

此外,子级别应包含一个泛型类型参数,其中包含一个列表,我可以在其中使用子级别。

这可能吗?

问候 阿尔

c# parameters blazor cascading generic-type-parameters
1个回答
0
投票

正如 @Brian Parker 在评论中所建议的那样,您可以使用

CascadingTypeParameter
属性。

检查级联泛型支持

这是一个简单的演示:

Child.razor

@typeparam T

<h3>@typeof(T).ToString()</h3>

@code {
    [Parameter]
    public List<T>? Data { get; set; }
}

MyComponent.razor

@attribute [CascadingTypeParameter(nameof(T))]
@typeparam T

@ChildContent

@code {
    [Parameter]
    public RenderFragment? ChildContent { get; set; }
}

用法:

<MyComponent T="string">
    <Child Data="_strings1" />
    <Child Data="_strings2" />
    <Child Data="_strings3" />
</MyComponent>

@code {
    public List<string> _strings1 = new();
    public List<string> _strings2 = new();
    public List<string> _strings3 = new();
}

通知

@attribute [CascadingTypeParameter(nameof(T))]
。此属性使
T
MyComponent
级联到
Child
组件,因此您不必在每个孩子上指定它。

© www.soinside.com 2019 - 2024. All rights reserved.