2012-04-04 26 views
6

Tôi đang chuyển mã sử dụng rộng rãi DynamicMethod để cho phép biên dịch trước, để có hiệu suất khởi động nguội tốt hơn. Tôi nhận thấy rằng DynamicMethod s có thể được JITted và thực hiện với kiểm tra khả năng hiển thị bỏ qua, cho phép họ truy cập các kiểu lồng nhau riêng, nhưng các assembly bình thường không thể (hoặc không thể? Tôi không thấy bất kỳ tùy chọn bộ tải rõ ràng nào). Lý do đằng sau quyết định thiết kế này là gì?Tại sao bỏ qua kiểm tra hiển thị chỉ được phép cho các phương pháp động?

+1

-unity, vì điều này không liên quan đến Microsoft Unity. Bạn có thể đọc bài đăng trên blog này, http://davedewinter.com/2010/11/21/tip-22-dynamicmethods-in-partial-trust/ Nó yêu cầu một số quyền nhất định để làm như vậy. Do đó, nếu bạn muốn hạn chế những nỗ lực đó bạn có thể. –

Trả lời

2

Tôi cần phải vẫy tay một chút để trả lời câu hỏi này, CAS là mãi mãi phức tạp. Đối số skipVisibility có liên quan đến các ứng dụng máy chủ đáng tin cậy tạo mã thực thi trong hộp cát. Trong trường hợp này, nó không thích hợp để thực hiện kiểm tra khi phương thức được tạo ra vì môi trường thực thi là sai. Nó cần phải xảy ra khi phương pháp thực hiện bên trong hộp cát. Trường hợp nó được kiểm tra CAS bình thường được thực hiện bởi sandbox.

Đặt đối số thành true trong thực tế thêm nhu cầu cấp quyền cho ReflectionPermissionFlag.MemberAccess, bắt buộc phải có ảnh chụp để tạo phương thức được tạo.

Topsy-turvy. Có một số thông tin cơ bản trong phần this MSDN article, "Thêm RestrictedMemberAccess vào Sandboxed Domains".

Các vấn đề liên quan