Как вы используете IronRuby для печати отчета об открытых методах и открытых свойствах класса C #? - PullRequest
1 голос
/ 14 февраля 2011

У кого-нибудь есть пример кода, показывающий, как вы размышляете над случайным классом c # из произвольной сборки .NET с использованием IronRuby? Меня больше всего интересует перечисление открытых методов и свойств из случайного класса C # и сборки .NET.

Я попытался загрузить "System.Reflection" из IronRuby. Я не могу найти хороший пример кода для этого.

Я знаю, что Ruby также может исследовать метаданные, относящиеся к классу. Однако я не могу загрузить свою тестовую сборку. (т.е. Test.dll)

Любая помощь, которую вы можете предложить, будет полезна.

1 Ответ

2 голосов
/ 14 февраля 2011

Чтобы загрузить 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)
...