如何将 TModel 限制为仅是类或实现特定接口?
@typeparam TModel
无法使语法正常工作。
从 ASP.NET Core 6.0 开始,您可以使用以下语法来指定泛型类型约束:
@typeparam TModel where TModel : IModel
解决方案是将类型约束另外放在类后面的部分代码中。有用!
确实,Sven 发布的答案有效,但我需要做一个修改 - 添加<RazorLangVersion>3.0</RazorLangVersion>
到我的.csproj文件中。之后,项目被编译。所以这是我的完整文件:
<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>
@typeparam TViewModel
@inherits PageBase<TViewModel>
<h3>Some text</h3>
public abstract partial class AuthenticatedPageBase<TViewModel>
where TViewModel : ViewModelBase
{
}
编辑:好吧,<RazorLangVersion>
从 csproj 文件中删除标签后,它似乎仍然有效。