0, đối tượng COM sẽđược giải phóng. Tuy nhiên, nếu cùng thể hiện của một đối tượng COM được sử dụng tại nhiều mẩu mã lệnh, nó phải được giải phóng ở các tượng COM được sử dụng tại nhiều mẩu mã lệnh, nó phải được giải phóng ở các nơi đó trước khi được giải phóng khỏi bộ nhớ.
1
155..88 SSSSSSSSửửửửửửửử ddddddddụụụụụụụụnnnnnnnngggggggg tttttttthhhhhhhhôôôôôôôônnnnnnnngggggggg ssssssssốốốốốốốố ttttttttùùùùùùùùyyyyyyyy cccccccchhhhhhhhọọọọọọọọnnnnnnnn
Bạn cần gọi một phương thức trong thành phần COM mà không phải truyền tất cả các thông số cần thiết. cả các thông số cần thiết.
Sử dụng trường Type.Missing.
Hầu hết các phương thức trong .NET Framework đều được nạp chồng nhiều lần để bạn có thể gọi phiên bản yêu cầu chỉ những thông số do bạn cung cấp. Mặt khác, COM không hỗ trợ việc gọi phiên bản yêu cầu chỉ những thông số do bạn cung cấp. Mặt khác, COM không hỗ trợ việc nạp chồng phương thức. Thay vào đó, các thành phần COM thường sử dụng các phương thức với một danh sách dài các thông số tùy chọn. Không may là, C# không hỗ trợ thông số tùy chọn, nghĩa là người phát triển phải cung cấp thêm các giá trị không cần thiết khi truy xuất một thành phần COM. Và vì các thông số COM thường được truyền bằng tham chiếu nên mã lệnh của bạn không thể truyền một tham chiếu null, mà phải khai báo một biến đối tượng và rồi truyền biến đó.
Bạn có thể giảm nhẹ vấn đề đến một chừng mực nào đó bằng cách cung cấp trường
Type.Missing bất cứ khi nào muốn bỏ qua một thông số tùy chọn. Nếu cần truyền một thông số bằng tham chiếu, bạn chỉ cần khai báo một biến đối tượng, thiết lập nó là Type.Missing, và số bằng tham chiếu, bạn chỉ cần khai báo một biến đối tượng, thiết lập nó là Type.Missing, và sử dụng nó trong mọi trường hợp:
private static object n = Type.Missing;
Ví dụ dưới đây sử dụng đối tượng Word để tạo và hiển thị một tài liệu. Trong đó, có nhiều phương thức yêu cầu các thông số tùy chọn (được truyền bằng tham chiếu). Việc sử dụng phương thức yêu cầu các thông số tùy chọn (được truyền bằng tham chiếu). Việc sử dụng trường Type.Missing đơn giản hóa mã lệnh rất nhiều.
using System;
public class OptionalParameters {
private static object n = Type.Missing; private static void Main() {
// Chạy Word phía nền.
Word.ApplicationClass app = new Word.ApplicationClass(); app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
// Tạo một tài liệu mới (không khả kiến đối với người dùng). Word.Document doc = app.Documents.Add(ref n, ref n, ref n,
ref n);
Console.WriteLine();
Console.WriteLine("Creating new document."); Console.WriteLine();
// Thêm một tiêu đề và hai hàng text.
Word.Range range = doc.Paragraphs.Add(ref n).Range; range.InsertBefore("Test Document");
string style = "Heading 1"; object objStyle = style; range.set_Style(ref objStyle);
range = doc.Paragraphs.Add(ref n).Range; range.InsertBefore("Line one.\nLine two."); range.Font.Bold = 1;
// Hiển thị Print Preview, làm cho Word trở nên khả kiến. doc.PrintPreview(); app.Visible = true; Console.ReadLine(); } } 1
155..99 SSSSSSSSửửửửửửửử ddddddddụụụụụụụụnnnnnnnngggggggg đđđđđđđđiiiiiiiiềềềềềềềềuuuuuuuu kkkkkkkkiiiiiiiiểểểểểểểểmmmmmmmm AAAAAAAAccccccccttttttttiiiiiiiivvvvvvvveeeeeeeeXXXXXXXX ttttttttrrrrrrrroooooooonnnnnnnngggggggg ........NNNNNNNNEEEEEEEETTTTTTTT----cccc----cccclllllllliiiiiiiieeeeeeeennnnnnnntttttttt
Bạn cần đặt một điều kiểm ActiveX trên một cửa sổứng dụng .NET Framework.
Sử dụng một RCW (cũng giống như với một thành phần COM bình thường). Để
làm việc với điều kiểm ActiveX khi thiết kế, thêm nó vào hộp công cụ của Visual Studio .NET. Studio .NET.
.NET Framework hỗ trợ như nhau đối với tất cả các thành phần COM, bao gồm điều kiểm
ActiveX. Điều khác nhau cơ bản là lớp RCW (cho điều kiểm ActiveX) dẫn xuất từ kiểu .NET
đặc biệt System.Windows.Forms.AxHost. Về mặt kỹ thuật, bạn thêm AxHost vào form, và nó sẽ giao tiếp với điều kiểm ActiveX phía hậu trường. Vì dẫn xuất từ giao tiếp với điều kiểm ActiveX phía hậu trường. Vì dẫn xuất từ
System.Windows.Forms.Control, nên AxHost cũng có các thuộc tính, phương thức, và sự kiện chuẩn như Location, Size, Anchor,.. Nếu RCW được sinh tự động, các lớp AxHost luôn bắt chuẩn như Location, Size, Anchor,.. Nếu RCW được sinh tự động, các lớp AxHost luôn bắt đầu bằng Ax.
Bạn có thể tạo một RCW cho một điều kiểm ActiveX cũng giống như cho bất cứ thành phần
COM nào khác bằng công cụ Tlbimp.exe hoặc tính năng Add Reference trong Visual Studio .NET, sau đó lập trình để tạo điều kiểm. Tuy nhiên, một cách tiếp cận dễ hơn trong Visual .NET, sau đó lập trình để tạo điều kiểm. Tuy nhiên, một cách tiếp cận dễ hơn trong Visual Studio .NET là thêm điều kiểm ActiveX vào hộp công cụ (xem mục 11.4 để biết thêm chi tiết). Chẳng có gì xảy ra khi bạn thêm một điều kiểm ActiveX vào hộp công cụ. Tuy nhiên, bạn có thể sử dụng biểu tượng trong hộp công cụ để thêm một thể hiện của điều kiểm vào form. Lần đầu bạn làm việc này, Visual Studio .NET sẽ tạo một InteropAssembly và thêm nó vào dự án của bạn. Ví dụ, nếu bạn thêm điều kiểm Microsoft Masked Edit (không có điều kiểm .NET
tương đương), Visual Studio .NET sẽ tạo một RCW Assembly có tên là AxInterop.MSMask.dll. Dưới đây là đoạn mã trong vùng designer dùng để tạo một thể hiện của điều kiểm này và Dưới đây là đoạn mã trong vùng designer dùng để tạo một thể hiện của điều kiểm này và thêm nó vào form:
this.axMaskEdBox1 = new AxMSMask.AxMaskEdBox();