Miền ứng dụng ,cơ chế phản chiếu và siêu dữ liệu phần 2 - Pdf 70

1.1
Thực thi assembly ở miền ứng dụng khác
V
VBạn cần thực thi một assembly ở một miền ứng dụng khác với miền ứng dụng
hiện hành.
#
#Gọi phương thức ExecuteAssembly của đối tượng AppDomain đại diện cho
miền ứng dụng, và chỉ định tên của assembly cần thực thi.
Nếu bạn có một assembly khả-thực-thi và muốn nạp để thực thi nó trong một miền ứng
dụng, phương thức ExecuteAssembly sẽ giúp bạn. Phương thức ExecuteAssembly có bốn
dạng thức khác nhau. Dạng thức đơn giản nhất chỉ nhận vào một kiểu string chứa tên c
ủa
assembly cần thực thi; bạn có thể chỉ định một file cục bộ hay một URL. Một dạng thức
khác cho phép bạn chỉ định chứng cứ (evidence) cho assembly (xem mục 13.10) và các
đối số để truyền đến điểm nhập của assembly (tương đương với các đối số dòng lệnh).
Phương thức ExecuteAssembly nạp assembly được chỉ định và thực thi phương thức
được định nghĩa trong siêu d
ữ liệu là điểm nhập của assembly (thường là phương thức
Main). Nếu assembly được chỉ định không có khả năng thực thi, ExecuteAssembly sẽ
ném ngoại lệ System.Runtime.InteropServices.COMException. Bộ thực thi không thực
thi assembly trong một tiểu trình mới, vì thế quyền kiểm soát sẽ không trả về cho đến khi
quá trình thực thi của assembly kết thúc. Do ExecuteAssembly nạp một assembly bằng
tên riêng phần (chỉ có tên file), CLR sẽ không dùng GAC hay probing để tìm assembly
(xem mục 3.5 để bi
ết thêm chi tiết).

" : " + s);
}
}
}
1.2
Thể hiện hóa một kiểu trong miền ứng dụng khác
V
VBạn cần thể hiện hóa một kiểu trong một miền ứng dụng khác với miền ứng
dụng hiện hành.
#
#Gọi phương thức CreateInstance hay CreateInstanceFrom của đối tượng
AppDomain đại 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 và 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

đã đượ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;
using System.Collections;
using System.Collections.Specialized;

// Giao diện chung cho tất cả các plug-in.
public interface IPlugin {
void Start();
void Stop();
}

// Một hiện thực đơn giản cho giao diện Iplugin
// để minh họa lớp điều khiển PluginManager.
public class SimplePlugin : IPlugin {

public void Start() {
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName +
": SimplePlugin starting...");
}

public void Stop() {
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName +
": SimplePlugin stopping...");
}
}

// Lớp điều khiển, quản lý việc nạp và thao tác


if (plugin != null) {


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status