CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 92

92
Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

4.

4.

T o ki u không th v

t qua biên mi n ng d ng

ạ ể

ể ượ

ề ứ

T o ki u không th v

t qua biên mi n ng d ng

ạ ể

ể ượ

ề ứ

Bạn cần tạo một kiểu dữ liệu sao cho các thể hiện của kiểu này không thể được
truy xuất từ mã lệnh ở các miền ứng dụng khác.

Phải chắc chắn kiểu dữ liệu thuộc dạng nonremotable, tức là không thể tuần tự
hóa cũng như không dẫn xuất từ lớp

MarshalByRefObject

.

Đôi khi bạn muốn kiểu dữ liệu nào đó chỉ được giới hạn truy xuất trong phạm vi của miền ứng
dụng. Để tạo kiểu dữ liệu dạng nonremotable, phải chắc rằng kiểu này không phải là khả-
tuần-tự-hóa và cũng không dẫn xuất (trực tiếp hay gián tiếp) từ lớp

MarshalByRefObject

.

Những điều kiện này sẽ đảm bảo rằng trạng thái của đối tượng không thể được truy xuất từ
các miền ứng dụng khác (các đối tượng này không thể được sử dụng làm đối số hay giá trị trả
về trong các lời gọi phương thức liên miền ứng dụng).
Điều kiện kiểu dữ liệu không phải là khả-tuần-tự-hóa được thực hiện dễ dàng do một lớp
không thừa kế khả năng tuần tự hóa từ lớp cha của nó. Để bảo đảm một kiểu không phải là
khả-tuần-tự-hóa, bạn phải chắc chắn rằng đặc tính

System.SerializableAttribute

không

được áp dụng khi khai báo kiểu.
Bạn cần lưu ý khi đảm bảo một lớp không được truyền bằng tham chiếu. Nhiều lớp trong thư
viện lớp .NET dẫn xuất trực tiếp hay gián tiếp từ

MarshalByRefObject

; bạn phải cẩn thận

không dẫn xuất lớp của bạn từ các lớp này. Những lớp cơ sở thông dụng dẫn xuất từ

MarshalByRefObject

bao gồm:

System.ComponentModel.Component

,

System.IO.Stream

,

System.IO.TextReader

,

System.IO.TextWriter

,

System.NET.WebRequest

, và

System.Net.

WebResponse

(xem tài liệu .NET Framework SDK để có danh sách đây đu các lớp dẫn xuất từ

MarshalByRefObject

).

5.

5.

N p assembly vào mi n ng d ng hi n hành

ề ứ

N p assembly vào mi n ng d ng hi n hành

ề ứ

Bạn cần nạp một assembly vào miền ứng dụng lúc thực thi.

Sử dụng phương thức tĩnh

Load

hay

LoadFrom

của lớp

System.Reflection.Assembly

.

Bộ thực thi tự động nạp các assembly mà assembly của bạn tham chiếu đến lúc biên dịch. Tuy
nhiên, bạn cũng có thể chỉ thị cho bộ thực thi nạp assembly. Các phương thức

Load

LoadFrom

đều thực hiện một công việc là nạp một assembly vào miền ứng dụng hiện hành, và

cả hai đều trả về một đối tượng

Assembly

mô tả assembly vừa được nạp. Sự khác biệt giữa hai

phương thức là danh sách các đối số được cung cấp để nhận dạng assembly cần nạp, và cách
thức bộ thực thi định vị assembly này.
Phương thức

Load

cung cấp nhiều dạng thức cho phép chỉ định assembly cần nạp, bạn có thể

sử dụng một trong những dạng sau:

Một

string

chứa tên đầy đủ hay tên riêng phân đê nhận dạng assembly.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.