複合Monikers

Moniker 最有用的功能之一,就是您可以將Moniker串連或撰寫在一起。 複合Moniker是Moniker,它是其他Moniker的組合,可以判斷元件之間的關聯性。 這可讓您組合物件的完整路徑,指定兩個以上的Moniker,這些Moniker相當於部分路徑。 您可以撰寫相同類別的Moniker(例如兩個檔案Moniker)或不同類別的Moniker(例如檔案Moniker和專案Moniker)。 如果您要撰寫自己的Moniker類別,您也可以使用檔案或專案Moniker撰寫Moniker。 複合的基本優點是,它提供您一段程式代碼來實作每一個可能的Moniker,這是更簡單的Moniker組合。 這可大幅減少特定自定義Moniker類別的需求。

因為不同類別的Moniker可以彼此組成,因此Monikers提供聯結多個命名空間的能力。 檔案系統會定義儲存為檔案之物件的通用命名空間,因為所有應用程式都瞭解檔案系統路徑名稱。 同樣地,容器物件也會為它所包含的物件定義私用命名空間,因為沒有容器瞭解另一個容器所產生的名稱。 Monikers 允許聯結這些命名空間,因為可以撰寫檔案Moniker和專案Moniker。 Moniker 用戶端可以使用單一機制搜尋所有物件的命名空間。 用戶端只會在Moniker上呼叫 IMoniker::BindToObject ,而Moniker程式代碼會處理其餘部分。 在複合上呼叫 IMoniker::GetDisplayName 會使用所有個別 Moniker 顯示名稱的串連來建立名稱。

此外,因為您可以撰寫自己的Moniker類別,Moniker組合可讓您將自定義延伸模組新增至物件的命名空間。

有時候,特定類別的兩個Moniker可以用特殊方式合併。 例如,代表不完整路徑的檔案Moniker和另一個代表相對路徑的檔案Moniker可以合併成代表完整路徑的單一檔案Moniker。 例如,檔案 Monikers “c:\work\art” 可以與相對檔案 Moniker “.. 組成。\backup\myfile.doc“ 等於 ”c:\work\backup\myfile.doc“。 這是非泛型組合範例。

另一方面,一般組合允許任何兩個Moniker的連線,無論其類別為何。 例如,您可以將專案Moniker撰寫到檔案Moniker上,但當然不是,相反地。

由於非泛型組合取決於所涉及的Moniker類別,因此其詳細數據是由特定Moniker類別的實作所定義。 如果您撰寫新的Moniker類別,則可以定義新的非泛型組合類型。 相較之下,泛型組合是由 OLE 所定義。 由於泛型組合而建立的Monikers稱為泛型複合Moniker。

這三個類別,檔案Moniker、專案Moniker和泛型複合Moniker,全都一起運作,而且它們是最常使用的Moniker類別。

Moniker 用戶端應該呼叫 IMoniker::ComposeWith ,以在另一個 Moniker 上建立複合。 它在內部呼叫的Moniker會決定它可以執行泛型或非泛型組合。 如果Moniker實作判斷泛型組合是可使用的,OLE 會提供 CreateGenericComposite 函式來協助進行這項作業。

反Monikers

類別Monikers

檔案 Monikers

專案Monikers

指標 Monikers