有没有人有一个代码示例,展示了如何使用IronRuby从任意.NET程序集中反映随机c#类?我最感兴趣的是列出随机C#类和.NET程序集中的公共方法和属性。
我曾尝试从IronRuby加载“System.Reflection”。我似乎找不到这样做的好代码示例。
我知道Ruby也可以探索与类相关的元数据。但是,我似乎无法加载我的测试程序集。 (即Test.dll)
您可以提供的任何帮助都会有所帮助。
答案 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)