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

603

Chương 15: Khả năng liên tác mã lệnh không-được-quản-lý

(resources.GetObject("axMaskEdBox1.OcxState")));

this.axMaskEdBox1.Size = new System.Drawing.Size(112, 20);

this.axMaskEdBox1.TabIndex = 0;

this.Controls.Add(this.axMaskEdBox1);

Chú ý rằng, các thuộc tính tùy biến của điều kiểm ActiveX không được áp dụng trực tiếp thông
qua các lệnh thiết lập thuộc tính. Thay vào đó, chúng sẽ được thiết lập theo nhóm khi thuộc
tính

OcxState

đã được thiết lập. Tuy nhiên, mã lệnh của bạn có thể sử dụng các thuộc tính này

một cách trực tiếp.

10.

10.

T o thành ph n .NET dùng cho COM-client

T o thành ph n .NET dùng cho COM-client

Bạn cần tạo một thành phần .NET sao cho một COM-client có thể gọi nó.

Tạo một assembly theo các chỉ dẫn trong mục này. Tạo một thư viện kiểu cho
assembly này bằng tiện ích dòng lệnh Type Library Exporter
(Tlbexp.exe).

.NET Framework hỗ trợ việc COM-client sử dụng thành phần .NET. Khi COM-client tạo một
đối tượng .NET, CLR sẽ tạo một đối tượng được-quản-lý và một COM Callable Wrapper
(CCW) bọc lấy đối tượng này. COM-client sẽ tương tác với đối tượng thông qua CCW. CLR
chỉ tạo một CCW cho một đối tượng được-quản-lý, bất chấp có bao nhiêu COM-client đang sử
dụng nó.
Các kiểu cần được truy xuất bởi COM-client phải thỏa mãn các yêu cầu sau:

Các kiểu được-quản-lý (lớp, giao diện, cấu trúc, hoặc kiểu liệt kê) phải được khai báo là

public

.

Nếu COM-client cần tạo đối tượng, nó phải có một phương thức khởi dựng mặc định

public

. COM không hỗ trợ các phương thức khởi dựng có chứa thông số.

Các thành viên của kiểu cần được truy xuất phải là các thành viên

public

. COM-client

không truy xuất được các thành viên

private

,

protected

,

internal

, và

static

.

Ngoài ra, bạn nên tuân theo các kinh nghiệm sau:

Không nên tạo các quan hệ thừa kế giữa các lớp, vì các quan hệ này sẽ không khả kiến
đối với COM-client (mặc dù .NET giả lập quan hệ này bằng cách khai báo một giao
diện lớp cơ sở dùng chung).

Các lớp mà bạn trưng ra nên hiện thực một giao diện. Với mục đích kiểm soát phiên
bản, bạn có thể sử dụng đặc tính

System.Runtime.InteropServices.GuidAttribute

để

chỉ định GUID sẽ được gán cho giao diện.

Nên tạo tên mạnh cho assembly để nó có thể được cài đặt vào GAC và được dùng
chung cho nhiều client.

Để tạo một đối tượng .NET, COM-client cần một thư viện kiểu (file .tlb). File thư viện kiểu có
thể được tạo từ một assembly bằng tiện ích dòng lệnh Tlbexp.exe. Ví dụ:

tlbexp ManagedLibrary.dll

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.