如何使用 f# Interactive 访问私有字段/方法/属性
F# Interactive 是一个功能强大的开发工具,因为它允许运行 WinForm 或 Wpf 窗口并调用其中的任意代码。
这提供了一种“先试后编码”的方法。
我经常希望明确地“打破界限”并
- 调用私有/受保护的方法
- 访问/更改私有字段和属性
是否有解决方法可以实现此目的?
F# interactive is a powerful development tool as it allows to run either WinForm or Wpf window and invoke arbitrary code in there.
This gives a way for a 'try-before-you code' approach.
Very often I wish to 'break the boundaries' explicitly and
- invoke private/protected methods
- access/change private fields and properties
Is there a workaround to achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
FSI 不为此提供任何特定支持,但您可以使用反射来做您想做的事情。
您可以进一步定义方法或运算符以使这变得更加容易。例如,您可以设置 F# 的动态赋值运算符来分配给私有字段:
下面是一些解析公共或私有字段、属性或方法的原始代码。请注意,有很多方法都会失败(特别是,尝试在重载方法上使用它是行不通的)。
这样您就可以动态调用方法和属性,如下所示:
FSI doesn't provide any particular support for this, but you can use Reflection to do the things you want.
You can go further and define methods or operators to make this even easier. For instance you can set up F#'s dynamic assignment operator to assign to private fields:
Here's some crude code to resolve public or private fields, properties, or methods. Note that there are plenty of ways in which this will fail (in particular, trying to use it on overloaded methods will not work).
With this you can dynamically invoke methods and properties as such: