我只关注了tutorial第1部分。虽然我能够让前半部分在F#中工作。我真的很想得到简单的json提供者类型。
我正在右键单击程序集,将输出发送到F#interactive,然后open BTypeProvider.TypeProvider.Provided;;
正常工作。第一个(MyType
)类型仍然生成正常。但是由于示例教程似乎在调用let inputs = ProvidedTypeDefinition("Inputs", Some typeof<obj>)
时似乎没有使用命名空间或程序集,所以我似乎无法从本教程第一部分的后半部分找到任何生成的类型。 / p>
我想知道如何反映导出的类型以找到它们。 Here's the code I'm running
答案 0 :(得分:2)
可能有帮助的几点!
教程中提到的代码的完整工作副本可以在GitHub上找到。更不清楚的是,它所代表的代码试图load a json file from a hard coded location,所以除非你把一个内容类似于博客文章中显示的内容的JSON文件放到该位置,否则不会发生太多。我会尽快更新教程以使其更清晰。
将类型导出到is set in the provider的命名空间,在本例中为“Mavnn.Blog.TypeProvider.Provided
”。
希望这将允许您成功使用FSI中的示例提供程序 - 如果您仍有问题,我建议您在Visual Studio中尝试它,因为在尝试加载NewtonSoft.Json
时可能存在程序集加载问题。 / p>
关于你反思这些类型的最后一点,我担心你有点不幸。大多数类型提供程序(包括教程中的类型提供程序)都会生成“已擦除”类型;这些类型可用于在编译过程中引用F#项目,但在运行时无法用于反射或其他CLR语言。如果这些属性中的任何一个对您很重要,您将需要对生成类型提供程序进行一些研究,这实际上会创建“真正的”.net对象。我知道如果你正在生成大型系统,会有一些性能影响。
答案 1 :(得分:0)
不确定是否可能是您想要的。
我通常会在主编辑窗口中编译一次
这使Intellisense在主窗口中工作
然后你可以使用&#34;执行互动&#34;从主窗口运行你想要的东西。
这不是你想要的,但我认为它应该对你有帮助。