1

我在让我的类型与 Saturn 和 JSON 类型提供程序一起工作时遇到了一些麻烦。

我的类型:(由 typeprovider 生成)

[<CLIMutable>]
type FeatureModel = JsonProvider<"../example.json">

我在Controller.createAction 中的代码:

...
let! inputModel = Controller.getModel<FeatureModel> ctx
let uploadedName = inputModel.Feature.Name //Example
...

我希望智能感知适用于inputModel.Feature.Name,但事实并非如此。我已经验证了类型。如果我直接使用它,FeatureModel.GetSample()它会显示属性/字段。

知道我错过了什么或做错了什么吗?

4

1 回答 1

0

您不能在类型提供程序上使用 CLIMUtable,这是一种已擦除的类型(不幸的是)。

[<CLIMutable>]
type FeatureModel = JsonProvider<"../example.json">

我认为上面的行不应该编译。

原因是某些类型提供程序(已擦除类型)在编译时被擦除,因此 CLI(公共语言接口和运行时)不能使用它们,但您可能有其他方式在控制器中使用它们。

也许使用其他一些自定义序列化程序或 Saturn,而不是直接使用 aspneectore 控制器绑定,或者创建自己的自定义绑定。

否则你可以在控制器中传递一个原始字符串,并在其中使用 FeatureModel.Parse (可能有效),如上所述

于 2021-12-04T22:36:59.023 回答