Поставщик типа 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 (вероятно, это работает), как было предложено выше.