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

Are generic type constraints possible in blazor?

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

@typeparam TModel

语法无法正常工作。

解决方法是在class后面的部分代码中另外添加类型约束。有效!

确实,Sven 发布的答案有效,但我需要做一个修改 - 添加 <RazorLangVersion>3.0</RazorLangVersion> 到我的 .csproj 文件。之后,该项目被编译。 所以这是我的完整文件:

  1. Project.cs
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <RazorLangVersion>3.0</RazorLangVersion> <!-- Important -->
    <Nullable>enable</Nullable>
    <ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
  </PropertyGroup>
</Project>
  1. Razor 组件
@typeparam TViewModel
@inherits PageBase<TViewModel>

<h3>Some text</h3>
  1. 背后的核心
public abstract partial class AuthenticatedPageBase<TViewModel>
    where TViewModel : ViewModelBase
{
}

编辑: 好吧,从 csproj 文件中删除 <RazorLangVersion> 标签后,它似乎仍然有效。

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

@typeparam TModel where TModel : IModel