2010-11-15 14 views

Trả lời

7

Công cụ sửa đổi truy cập giúp luồng chương trình trực tiếp. Chúng giống như tín hiệu giao thông - bạn không phải tuân theo chúng, và trong một số trường hợp nhất định người chơi có thể chọn bỏ qua chúng, nhưng bạn thường muốn tôn trọng chúng bởi vì chúng làm cho mọi thứ chạy trơn tru hơn nhiều.

2

Các nhà thầu tư nhân thường được sử dụng với các mẫu thiết kế (ví dụ: Factory Method Pattern, Singleton Pattern) để ngăn các đối tượng được khởi tạo không chính xác.

Phương pháp tĩnh riêng thường nhanh hơn để gọi nếu bạn không cần truy cập bất kỳ biến mẫu nào (trình biên dịch không phải kiểm tra đối tượng là không null trong số những thứ khác).

2

Phản ánh được công nhận là một cách mạnh mẽ hơn bình thường để truy cập các lớp học của bạn - các khuyến nghị là quyền truy cập không công khai bị từ chối cho mã không kiểm soát được - xem ReflectionPermission.

Không phản ánhĐiều khoản, mã có thể chỉ sử dụng phản ánh để truy cập thành viên công cộng của đối tượng. Mã số với ReflectionPermission và ReflectionPermissionFlag cờ có thể truy cập được bảo vệ và thành viên riêng tư của các đối tượng.

Thận trọng

Vì ReflectionPermission có thể cung cấp quyền truy cập vào các loại ngoài công lập và các thành viên, chúng tôi khuyên bạn không không cấp ReflectionPermission để đang Internet, trừ trường hợp được ReflectionPermissionFlag.RestrictedMemberAccess cờ. RestrictedMemberAccess phép truy cập cho các thành viên ngoài công lập, với hạn chế được grant-set của thành viên ngoài công lập phải bằng, hoặc một tập hợp con của, grant-set của mã mà truy cập vào ngoài công lập các thành viên.

Nói cách khác, người ta chỉ truy cập vào internals lớp học của bạn nếu bạn cho họ - cũng giống như với thiết lập bổ truy cập ở nơi đầu tiên, cho các khách hàng trực tiếp với một tài liệu tham khảo lắp ráp. Mọi thành viên chỉ hiển thị nếu bạn để nó hiển thị.

0

Hành vi này khác nhau trong thời gian chạy Silverlight, nơi phản ánh về cơ bản chỉ có thể thực hiện những gì mà trình biên dịch (C# hoặc VB) được phép. Vì vậy, trong Silverlight, bạn không thể khởi tạo bằng cách sử dụng một hàm tạo riêng, ngay cả với Activator.CreateInstance.

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