【发布时间】:2020-12-31 12:00:40
【问题描述】:
Blazor 新用户、Web Assembly 新用户、.NET Core 新用户、.NET 新用户(自 1.0 起)。
我正在迈出学习 Blazor 的第一步 - 我主要是后端和 winforms 开发人员,而不是客户端。
对于我的项目,我正在构建一个 Blazor Web Assembly 客户端,该客户端可以访问我通过 Azure Functions 3 部署的一些现有功能。我想在前端和后端应用程序之间共享一些 POCO。
我在 Blazor 应用和 Azure Functions 应用之间遇到了“阻抗不匹配”问题。这两个应用程序(Blazor 和 Functions)都是基本的“开箱即用”应用程序,配置方式与 VS2019 中的新项目模板创建它们的方式相同。
- Azure 函数应用以“netcoreapp3.1”为目标,而 Blazor 客户端应用以“netstandard2.1”为目标
- Azure Functions 使用
Newtonsoft.Json而 Blazor 使用System.Text.Json
为了共享对象定义,我将包含我的 POCO 的类库更改为 netstandard2.1,这似乎没问题。这是正确的解决方案吗?
我无法克服的问题是:从 Azure Functions 应用返回一个包含 enum 属性的对象。在 JSON 文本中遇到枚举值时,在 Blazor 应用中此对象的反序列化失败。
如何让System.Text.Json 反序列化enum 属性?
我已经看到了如何将 JsonConvertorFactory 添加到 ASP.NET Core 的示例,但不清楚这些示例如何或是否适用于 Blazor 应用程序。例如,here。
在Newtsoft.Json 一侧,POCO 使用Newtonsoft.Json.JsonConvertor 属性进行装饰。我尝试添加相应的 System.Text.Json 转换器属性,但找不到该类 - System.Text.Json 不是 netstandard2.1 的一部分吗?
【问题讨论】:
标签: c# asp.net-core json.net blazor blazor-client-side