blazor中可能有泛型类型约束吗?

时间:2020-03-17 00:07:56

标签: c# blazor-server-side asp.net-blazor

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

@typeparam TModel

无法使用语法。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

确实,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> 标记后,它似乎仍然有效。