我正在尝试创建一个具有通用类型的组件来操作任何类型的数据。
我想在 MyComponent 级别定义我的通用类型,并在 Child 级别访问我的通用类型,而无需在
此外,子级别应包含一个泛型类型参数,其中包含一个列表,我可以在其中使用子级别。
这可能吗?
问候 阿尔
正如 @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
组件,因此您不必在每个孩子上指定它。