F#interactive可以帮我找到TypeProvider的导出类型吗?

时间:2014-09-11 13:40:39

标签: f# type-providers

我只关注了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

2 个答案:

答案 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;从主窗口运行你想要的东西。
这不是你想要的,但我认为它应该对你有帮助。