Как я могу сделать “внутренние” классы и участников блока.NET видимыми к коду IronRuby?

Мой сценарий состоит из следующих моментов.

  • У меня есть продукт серийного программного обеспечения, который я разрабатываю в C#
  • Так как это - упакованный продукт, открытыми интерфейсами блоков нужно плотно управлять...
    • Все блоки сильно названы
    • Любые классы, которые не должны абсолютно быть "общедоступными", являются "внутренними"
  • Я хочу записать модульные тесты на те "внутренние" классы, так как они - объем кода

И наконец.... Я хочу попытаться писать модульные тесты в Ruby.

Так как модульные тесты были бы внешними к блоку, содержащему код под тестом, блоки под тестом должны будут каждый иметь атрибут "InternalsVisibleTo", указывающий название блока модульного теста. Который, конечно, означал бы, что модульные тесты Ruby должны будут скомпилировать вниз в блок.NET, таким образом, им можно предоставить доступ таким образом.

Это может быть сделано? Если так, как? Все, что я могу найти в сети о "компиляции IronRuby", о создании фактического времени выполнения IronRuby из источника.

1
задан Chris Ammerman 21 May 2010 в 00:13
поделиться

1 ответ

Решение очень простое (и вам даже не нужно компилировать код IronRuby в сборку).

Интерпретатор IronRuby (ir.exe) поддерживает параметр командной строки -X: PrivateBinding (это чувствительно к регистру, обратите внимание). Когда интерпретатор работает в режиме частной привязки, вы можете вызывать внутренние и даже частные члены классов .NET.

Поэтому, чтобы проверить внутренние члены вашего .NET-класса, запустите тестовый код следующим образом (предполагая, что тестовый код находится в файле с именем "test_my_code.rb"):

ir -X:PrivateBinding test_my_code.rb
2
ответ дан 3 September 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: