Поставщик типа JSON с Saturn Framework `Controller.getModel <MyModel>` не работает

У меня проблемы с тем, чтобы мой тип работал с Saturn и поставщиком типов JSON.

Мой тип: (сгенерировано поставщиком типов)

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

Мой код в Controller.create Действие:

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

Я ожидал, что intellisense будет работать на inputModel.Feature.Name, но это не так. Я проверил тип. Если я использую его напрямую сFeatureModel.GetSample() он показывает мне свойства / поля.

Есть идеи, что мне не хватает или что я делаю неправильно?

1 ответ

вы не можете использовать CLIMUtable для поставщика типов, это стертый тип (к сожалению).

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

я думаю, что приведенная выше строка не должна компилироваться.

Резонанс заключается в том, что некоторые поставщики типов (стертые типы) стираются во время компиляции, поэтому они не могут использоваться CLI (общий языковой интерфейс и среда выполнения), но у вас могут быть другие способы их использования в контроллерах.

Возможно, используя некоторые другие пользовательские сериализаторы или Saturn, вместо прямого использования привязки контроллера aspnectore или создания собственной пользовательской привязки.

иначе вы можете передать необработанную строку в контроллер и использовать внутри нее FeatureModel.Parse (вероятно, это работает), как было предложено выше.

Другие вопросы по тегам