2012-04-04 22 views
6

我正在移植代碼,它廣泛使用DynamicMethod以允許預編譯,以獲得更好的冷啓動性能。我注意到,DynamicMethod s可以被跳過的可見性檢查,允許他們訪問私有嵌套類型,但正常的程序集不能(或不能他們?我沒有看到任何明顯的加載程序選項)JITted和執行。這個設計決定背後的基本原理是什麼?爲什麼跳過只能用於動態方法的可見性檢查?

+1

-unity,因爲這與Microsoft Unity無關。您可能會閱讀這篇博文,http://davedewinter.com/2010/11/21/tip-22-dynamicmethods-in-partial-trust/它確實需要某些權限才能這樣做。因此,如果你想限制這種嘗試,你可以。 – 2013-04-22 02:07:38

回答

2

我需要揮手回答這個問題,CAS永遠是複雜的。 skipVisibility參數與生成可在沙箱中執行的代碼的可信宿主應用程序相關。在這種情況下,由於執行環境錯誤而產生方法時執行檢查是不合適的。當方法在沙箱內部執行時需要執行此操作。它受到沙箱執行的正常CAS檢查。

將參數設置爲true實際上增加了 ReflectionPermissionFlag.MemberAccess的權限需求,需要獲取生成方法的鏡頭。

Topsy-turvy。 this MSDN article「向沙盒子域添加RestrictedMemberAccess」部分提供了一些背景信息。

相關問題