2011-02-14 25 views
1

有誰有一個顯示來自使用IronRuby的任意.NET程序集你在一個隨機的C#類如何反映一個代碼示例?我最感興趣的是從隨機C#類和.NET程序集中列出公共方法和屬性。如何使用IronRuby的打印的公共方法和C#類的公共性質的報告?

我試圖從IronRuby的加載 「的System.Reflection」。我似乎無法找到一個好的代碼示例。

我知道紅寶石可以探索相關的類以及元數據。然而,我似乎無法加載我的測試組件。 (即Test.dll的)

任何幫助,您可以提供將是有益的。

回答

2

爲了加載你的Test.dll的,你只需要require 'Test'假設其可見的腳本。

您可以使用內置的Ruby方法public_instance_methods但是這將包括那些從Ruby的Object類,如:

System::String.public_instance_methods 

如果你只在你的CLR類型的方法,有興趣的話可以訪問通過IronRuby to_clr_type方法給定對象的類型。這使您可以訪問System.Type提供的所有反射方法。例如,下面的腳本將列出所有類Test.MyClass的公共實例方法Test.dll的:

$: << '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) 
+1

只需添加到這個答案 - 使用的IronRuby的元編程能力的反射般的操作問題該IronRuby的改變的屬性和方法的名稱,以滿足紅寶石標準(稱爲「名稱重整」的過程)。因此,一個名爲方法「找時間做」會變成是「do_that」裏面的IronRuby ......所以這是值得考慮的。 – 2011-02-16 07:56:39