如何使用IronRuby打印C#类的公共方法和公共属性的报告?

时间:2011-02-14 13:27:24

标签: ironruby

有没有人有一个代码示例,展示了如何使用IronRuby从任意.NET程序集中反映随机c#类?我最感兴趣的是列出随机C#类和.NET程序集中的公共方法和属性。

我曾尝试从IronRuby加载“System.Reflection”。我似乎找不到这样做的好代码示例。

我知道Ruby也可以探索与类相关的元数据。但是,我似乎无法加载我的测试程序集。 (即Test.dll)

您可以提供的任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:2)

为了加载您的Test.dll,您只需要require 'Test'假设它对您的脚本可见。

您可以使用内置的Ruby方法public_instance_methods,但这将包括来自Ruby的Object类的方法,例如:

System::String.public_instance_methods

如果您只对CLR类型的方法感兴趣,则可以通过IronRuby to_clr_type方法访问给定对象的Type。这使您可以访问System.Type提供的所有反射方法。例如,以下脚本将列出Test.dll中Test.MyClass类的所有公共实例方法:

$: << 'path/to/dll'

require 'Test'

puts Test::MyClass.to_clr_type.get_methods(
  System::Reflection::BindingFlags.Public | System::Reflection::BindingFlags.Instance | System::Reflection::BindingFlags.DeclaredOnly)