在Blazor的.razor文件中,您可以使用@typeparam MyType
来使用泛型参数。例如:
MyComponent.razor
@typeparam MyType
<SomeHtml />
@code
{
[Parameter]
public List<MyType> MyList{ get; set; }
}
所以您可以调用:
<MyComponent MyType="MyTypeABC" MyList="@MyData.MyList" />
但我更喜欢后端代码(razor.cs),如何在razor.cs文件中为类型使用参数,例如@typeparam MyType
?
我目前的解决方法是:
MyComponent.razor
@inherits MyComponentCode<MyType>
@typeparam MyType
MyComponent.razor.cs
public class MyComponentCode<MyType> : ComponentBase
{
[Parameter]
public List<MyType> MyList{ get; set; }
}
我想要类似于 [TypeParameter]
的东西,不过或许有更好的解决方案,有任何想法吗?或者也许这是关于如何在代码中使用 Razor @ 语句的一般性问题。
2020-02-27 的更新:
根据 Roger Wolf 的建议(见下文),有一个稍微好一点的方法:
MyComponent.razor
@typeparam MyType
MyComponent.razor.cs
public partial class MyComponent<MyType>
{
[Parameter]
public List<MyType> MyList{ get; set; }
}
调用
<MyComponent MyType="MyTypeABC" />
partial class MyComponent
比@inherits MyComponent
更好。在这种情况下,您还可以删除ComponentBase的继承(: ComponentBase
),因为组件本身已经是ComponentBase;),这意味着您仍然可以使用诸如protected override void OnInitialized()
之类的方法。 - StewieG