2012-10-19 75 views
1

我需要爲Metro編譯一個程序集,並基本檢查一些編譯器生成的代碼是否來自常規控制檯程序(這應該很容易)。我的問題是,編譯器生成的代碼會以內部和/或私有(類和方法)的形式發出所有感興趣的內容。可以覆蓋.Net程序集上的訪問限制嗎?

無論如何要指定我的控制檯程序是像一個超級朋友什麼的?此外,醜陋的黑客是可以接受的,這只是一個集成測試。儘管如此,最好的方法是什麼?我想到的唯一兩種方式就是很多反思,或者對IL進行分解,使用一些非常複雜的正則表達式,並用公共所有私人/內部成員替換。

回答

2

是否有無論如何指定我的控制檯程序是像一個超級朋友或什麼?

您可以使用InternalsVisibleToAttribute - 將它應用到「目標」程序集,引用控制檯應用程序。這不會讓你訪問私人成員,但它應該沒問題,如果internal訪問是足夠好的。

唯一直接的警告是,我不確定該屬性是否適用於Metro裝配......但它確實值得一試。

+0

然後是通過反射訪問私人成員的唯一方法嗎? – Earlz

+0

Heh,實際上最終嘗試了這一點,並被「項目目標.NetFramwork迎接,而文件引用以.NETCore爲目標。」這不是一個受支持的方案「我想我可以很好玩地剝離這些函數或者使用Mono.Cecil – Earlz

相關問題