11

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

@typeparam TModel

无法使语法正常工作。

4

3 回答 3

15

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

@typeparam TModel where TModel : IModel
于 2021-08-20T15:56:01.367 回答
12

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

于 2020-03-21T17:59:49.427 回答
0

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

  1. 项目.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. 剃须刀组件
@typeparam TViewModel
@inherits PageBase<TViewModel>

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

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

于 2021-04-14T13:07:49.623 回答