2010-05-18 55 views
1

我的場景由以下幾點組成。如何使IronRuby代碼可見的「內部」類和.NET程序集的成員?

  • 我已經打包的軟件產品,我開發的C#
  • 既然是包裝產品,該組件的公共接口需要被嚴格控制...
    • 所有組件都很強-named
    • 沒有絕對必須是「公共」的任何類是「內部」
  • 我想編寫單元測試對那些「內部」類,SI nce他們是代碼的大部分

最後....我想嘗試在Ruby中編寫單元測試。由於單元測試對包含被測代碼的程序集是外部的,因此被測程序集每個都需要具有指定單元測試程序集名稱的「InternalsVisibleTo」屬性。當然,這意味着Ruby單元測試將不得不編譯到.NET程序集,以便以這種方式訪問​​它們。

可以這樣做嗎?如果是這樣,怎麼樣?我可以在網上找到的關於「編譯IronRuby」的內容是關於從源代碼構建實際的IronRuby運行時。

回答

2

該解決方案非常簡單(您甚至不需要將IronRuby代碼編譯爲程序集)。

IronRuby解釋器(ir.exe)支持命令行開關-X:PrivateBinding(這是區分大小寫的,注意)。當解釋器以私有綁定模式運行時,可以調用.NET類的內部甚至私有成員。

因此,你的.NET類內部成員測試,如下運行測試代碼(假設測試代碼是在名爲文件「test_my_code.rb」):

ir -X:PrivateBinding test_my_code.rb 
相關問題