blazor 中是否可以使用泛型类型约束?

Sve*_*ter 6 c# blazor-server-side asp.net-blazor

如何将 TModel 限制为仅类或实现特定接口?

@typeparam TModel
Run Code Online (Sandbox Code Playgroud)

无法使语法正常工作。

Cra*_*own 45

从 ASP.NET Core 6.0 开始,您可以使用以下语法来指定泛型类型约束:

@typeparam TModel where TModel : IModel
Run Code Online (Sandbox Code Playgroud)

  • 由于某种原因,这对我不起作用。.NET 7、Blazor 服务器、MudBlazor <LangVersion>最新</LangVersion>、<RazorLangVersion>最新</RazorLangVersion>。有什么我可能会错过的吗? (2认同)

Sve*_*ter 9

解决方案是将类型约束额外放在类后面的部分代码中。有用!

编辑:从 NET 6.0 Prev 4 开始,支持在 razor 文件本身中定义约束示例:

@typeparam T where T : class, IYxz
Run Code Online (Sandbox Code Playgroud)

  • 您能发布一个例子吗?我按照你的描述做了,Blazor 说该部分有不同的基类,即一个(来自 razor)在没有约束的情况下编译,第二个(后面的 C# 代码)有约束。 (2认同)