为什么 Blazor WebAssembly GetItemsAsync<T>() 中的 Kentico-Kontent .NET SDK 运行 返回所有类型的项目?

Why is Kentico-Kontent .NET SDK running in Blazor WebAssembly GetItemsAsync<T>() returning items of all types?

我一直在试用 Blazor WebAssembly 并尝试连接到现有的 Kentico Kontent API。

我使用 DotNet Tool KontentModelGenerator 生成模型,然后将其传递给 Kentico 的 IDeliveryClient 实现。

@code{
    private IEnumerable<DinghyClass> dinghyClasses;
    protected override async Task OnInitializedAsync()
    {
        dinghyClasses = (await deliveryClient.GetItemsAsync<DinghyClass>()).Items;
    }
}

然后 returns Kentico 项目中的每个项目(即所有类型的内容模型),而不仅仅是请求类型的项目。

我是不是做错了什么?这是 Kentico 的 DeliveryClient 的问题还是 Blazor 如何解释它的问题?根据返回的数据创建了一些半填充的对象这一事实表明 Javascript 正在填充对象而没有任何形式的类型检查。

我在 GitHub which is deploying Here 上有一个例子。该页面应列出 5 艘小艇 类,但每个其他内容项也有一个(空)对象。在 chrome 调试器上查看“网络”选项卡时,将返回所有项目,而不仅仅是 DinghyClass 个项目。

在查看(和测试)您的 GitHub 存储库中的代码时,您似乎生成了一个 CustomTypeProvider,但它没有在 Program.cs 中注册。当我添加时:

builder.Services.AddSingleton<ITypeProvider, CustomTypeProvider>();

到 Program.cs 在您的解决方案中,SDK 返回了 5 个小艇 class 结果。