Share via


呼叫方法、屬性和事件

.NET 用戶端可以呼叫作用中 COM 物件上的方法,調整它的屬性,並且捕捉來自伺服器的事件。Loan Coclass (Unmanaged C++、ATL) 會公開在這個章節中以程式碼範例出現的方法和屬性。

呼叫方法

從 Managed 程式碼呼叫 COM 物件上的方法,就和呼叫 Managed 物件上的方法完全一樣。由於 COM 元件一定是透過介面來公開功能,因此您可以選擇在介面上或是直接在 COM Coclass 上呼叫方法。Coclass 只會公開其預設介面所公開的成員。以下範例程式碼會直接叫用匯入之 Coclass 上的 GetFirstPmtDistribution 方法:

MorePmts = ln.GetFirstPmtDistribution(ln.Payment, Balance, _
               Principal, Interest)
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, out Balance, 
               out Principal, out Interest);

COM Interop 會替您封送處理這些資料型別。舉例來講,如果您將型別 System.String 傳遞給 COM 物件,COM Interop 會將這個型別轉換為 BSTR。

在型別程式庫中標記為 [out retval]** 的參數會轉換為方法傳回值。轉換處理序會從 Managed 簽章中移除這些參數。依照預設,Runtime 是將失敗的 HRESULT 對應至對等的 Managed 例外狀況,來將例外狀況擲回 Managed 程式碼。

取得和設定屬性

COM 介面可包含屬性,當做介面成員。您可以用取得和設定 Managed 類別公開屬性的相同方式,來取得或設定 COM 物件公開的屬性。在組件中匯入為中繼資料的 COM 介面和 Coclass 會公開每一個屬性的屬性和存取子方法。下列程式碼範例會設定 OpeningBalance 屬性:

ln.OpeningBalance = Convert.ToDouble(Args(1))
ln.OpeningBalance = Convert.ToDouble(Args[0]);

如需屬性轉換的詳細資訊,請參閱匯入的成員轉換。如需 .NET Framework 中屬性的一般描述的詳細資訊,請參閱屬性概觀

處理事件

.NET 用戶端可以處理由 COM 伺服器引發的事件,就像它處理任何其他 Managed 事件的方式一樣。當您匯入伺服器的型別程式庫時,轉換處理序會建立您電傳到事件處理常式的委派。如需這個處理序的詳細資訊,請參閱處理由 COM 來源引發的事件

請注意,於 .NET 用戶端中引發事件的 COM 物件在發行前需要兩個記憶體回收行程 (GC) 集合。這是由於 COM 物件和 Managed 用戶端間發生的參考循環所造成的。如果您需要明確發行 COM 物件,則應呼叫 Collect 方法兩次。

請參閱

工作

HOW TO:對應 HRESULT 和例外狀況

概念

在 Managed 程式碼中使用 COM 型別
匯入的成員轉換
屬性概觀
COM Interop 範例:.NET 用戶端與 COM 伺服器

其他資源

Interop 封送處理