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

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

Gọi phương thức

CreateInstance

hay

CreateInstanceFrom

của đối tượng

AppDomain

đai diên cho miền ứng dụng đích.

Việc sử dụng phương thức

ExecuteAssembly

(đã được thảo luận trong mục 3.6) không mấy

khó khăn; nhưng khi phát triển các ứng dụng phức tạp có sử dụng nhiều miền ứng dụng, chắc
chắn bạn muốn kiểm soát quá trình nạp các assembly, tạo các kiểu dữ liệu, và triệu gọi các
thành viên của đối tượng bên trong miền ứng dụng.
Các phương thức

CreateInstance

CreateInstanceFrom

cung cấp nhiều phiên bản nạp

chồng giúp bạn kiểm soát quá trình tạo đối tượng. Các phiên bản đơn giản nhất sử dụng
phương thức khởi dựng mặc định của kiểu, nhưng cả hai phương thức này đều thiết đặt các
phiên bản cho phép bạn cung cấp đối số để sử dụng bất kỳ phương thức khởi dựng nào.
Phương thức

CreateInstance

nạp một assembly có tên xác định vào miền ứng dụng bằng quá

trình đã được mô tả cho phương thức

Assembly.Load

trong mục 3.5. Sau đó,

CreateInstance

tạo đối tượng cho kiểu và trả về một tham chiếu đến đối tượng mới được đóng gói trong

ObjectHandle

(được mô tả trong mục 3.3). Tương tự như thế đối với phương thức

CreateInstanceFrom

; tuy nhiên,

CreateInstanceFrom

nạp assembly vào miền ứng dụng bằng

quá trình đã được mô tả cho phương thức

Assembly.LoadFrom

trong mục 3.5.

AppDomain

cũng cung cấp hai phương thức rất tiện lợi có tên là

CreateInstanceAndUnwrap

CreateInstanceFromAndUnwrap

, chúng sẽ tự động khôi

phục tham chiếu đến đối tượng đã được tạo từ đối tượng

ObjectHandle

; bạn phải

ép đối tượng trả về cho đúng kiểu trước khi sử dụng.

Nếu bạn sử dụng

CreateInstance

hay

CreateInstanceFrom

để tạo đối tượng kiểu MBV trong

một miền ứng dụng khác, đối tượng sẽ được tạo nhưng tham chiếu trả về sẽ không chỉ đến đối
tượng đó. Do cách thức đối tượng MBV vượt qua biên miền ứng dụng, tham chiếu này sẽ chỉ
đến một bản sao của đối tượng được tạo tự động trong miền ứng dụng cục bộ. Chỉ khi bạn tạo
một kiểu MBR thì tham chiếu trả về mới chỉ đến đối tượng trong miền ứng dụng khác (xem
mục 3.2 để biết thêm chi tiết về kiểu MBVMBR).
Kỹ thuật chung để đơn giản hóa việc quản lý các miền ứng dụng là sử dụng lớp điều khiển
(controller class). Một lớp điều khiển là một kiểu MBR tùy biến. Bạn hãy tạo một miền ứng
dụng rồi tạo đối tượng lớp điều khiển trong miền ứng dụng này bằng phương thức

CreateInstance

. Lớp điều khiển hiện thực các chức năng cần thiết cho ứng dụng để thao tác

miền ứng dụng và các nội dung của nó. Các chức năng này có thể bao gồm: nạp assembly, tạo
thêm miền ứng dụng, dọn dẹp trước khi xóa miền ứng dụng, hay liệt kê các phần tử chương
trình (bạn không thể thực hiện ở bên ngoài miền ứng dụng).
Ví dụ dưới đây trình bày cách sử dụng một lớp điều khiển có tên là

PluginManager

. Khi đã

được tạo trong một miền ứng dụng,

PluginManager

cho phép bạn tạo đối tượng của các lớp có

hiện thực giao diện

IPlugin

, chạy và dừng các plug-in đó, và trả về danh sách các plug-in hiện

được nạp.

using System;

using System.Reflection;

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.