C#中是否存在与@typeparam对等的语法?官方文档未查询到相关说明
C# 对等Blazor
@typeparam 语法的说明 @typeparam 是Blazor Razor组件特有的Razor语法,用于声明组件的泛型参数,不存在完全对等的C#原生关键字,但不同场景下有对应的实现方式,你写的代码报错是写法错误导致的。
1. 你的代码错误修复
你不需要在@code块中额外声明泛型参数T,@typeparam T已经完成了泛型参数的注册,删掉错误的那行即可正常运行,正确写法如下:
@typeparam T <!-- 如果需要加泛型约束,可以写为 @typeparam T where T : 你的约束类型 --> <div>@typeof(T).Name</div> @code { // 这里直接使用T即可,不需要额外声明 }
你写的[TypeParameter] type T {get;set;}有两个错误:
- C# 没有
type关键字用来声明泛型参数,这个语法完全不合法 [TypeParameter]特性仅用于标记级联泛型参数,不是用来声明普通泛型参数的
2. 纯C#类场景的对等实现
如果你是要在非Razor的纯C# Blazor组件类中声明泛型参数,直接写泛型类即可,和普通C#泛型类的写法完全一致:
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Rendering; public class MyGenericComponent<T> : ComponentBase { protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.OpenElement(0, "div"); builder.AddContent(1, typeof(T).Name); builder.CloseElement(); } }
内容的提问来源于stack exchange,提问作者Kevon
相关产品推荐
相关产品推荐

