有没有办法在FSI会话中检索打开的命名空间和模块列表?我正在玩打印F#引用的表达式,我希望能够区分应该完全打印的模块的值与不应该打印的模块的值。
答案 0 :(得分:3)
我认为没有办法做到这一点。
fsi
对象没有办法做到这一点,所以像这样的简单方法是行不通的。我相信在内部,信息存储在F#Interactive用于保持交互当前状态的FsiDynamicCompilerState
记录中(您可以在源中的“fsi.fs”中找到它)。
不幸的是,我没有找到任何可用于访问此状态的静态属性 - 它保存为FsiDynamicCompiler
中的一个字段,该字段在main
函数中创建,并且不存储在其他任何位置。原则上,您可能希望能够通过堆栈跟踪访问实例(但我找不到获取堆栈帧的局部变量的方法)。
如果您想修改fsi.exe
以使其成为可能,那将是另一个问题,但我想这不是您想要的。