Monikers Komposit

Salah satu fitur moniker yang paling berguna adalah Anda dapat menggabungkan atau menyusun moniker bersama-sama. Moniker komposit adalah moniker yang merupakan komposisi moniker lain dan dapat menentukan hubungan antara bagian-bagian. Ini memungkinkan Anda merakit jalur lengkap ke objek yang diberikan dua atau lebih moniker yang setara dengan jalur parsial. Anda dapat menyusun moniker dari kelas yang sama (seperti dua moniker file) atau kelas yang berbeda (seperti moniker file dan moniker item). Jika Anda menulis kelas moniker Anda sendiri, Anda juga dapat menyusun moniker Anda dengan moniker file atau item. Keuntungan dasar komposit adalah memberi Anda satu bagian kode untuk mengimplementasikan setiap moniker yang mungkin merupakan kombinasi moniker yang lebih sederhana. Itu secara signifikan mengurangi kebutuhan untuk kelas moniker kustom tertentu.

Karena moniker dari kelas yang berbeda dapat disusun satu sama lain, moniker menyediakan kemampuan untuk menggabungkan beberapa namespace layanan. Sistem file mendefinisikan namespace umum untuk objek yang disimpan sebagai file karena semua aplikasi memahami nama jalur sistem file. Demikian pula, objek kontainer juga mendefinisikan namespace privat untuk objek yang dikandungnya karena tidak ada kontainer yang memahami nama yang dihasilkan oleh kontainer lain. Monikers memungkinkan namespace ini untuk digabungkan karena moniker file dan moniker item dapat disusun. Klien moniker dapat mencari namespace untuk semua objek menggunakan satu mekanisme. Klien hanya memanggil IMoniker::BindToObject pada moniker, dan kode moniker menangani sisanya. Panggilan ke IMoniker::GetDisplayName pada komposit membuat nama menggunakan perangkaian semua nama tampilan monikers individu.

Selain itu, karena Anda dapat menulis kelas moniker Anda sendiri, komposisi moniker memungkinkan Anda untuk menambahkan ekstensi yang disesuaikan ke namespace layanan untuk objek.

Terkadang dua moniker kelas tertentu dapat digabungkan dengan cara khusus. Misalnya, moniker file yang mewakili jalur yang tidak lengkap dan moniker file lain yang mewakili jalur relatif dapat digabungkan untuk membentuk moniker file tunggal yang mewakili jalur lengkap. Misalnya, moniker file "c:\work\art" dapat disusun dengan moniker file relatif ".. \backup\myfile.doc" sama dengan "c:\work\backup\myfile.doc". Ini adalah contoh komposisi nongenerik.

Komposisi generik, di sisi lain, mengizinkan koneksi dari dua moniker, tidak peduli apa kelas mereka. Misalnya, Anda dapat menyusun item moniker ke moniker file, meskipun tidak, tentu saja, sebaliknya.

Karena komposisi nongenerik tergantung pada kelas moniker yang terlibat, detailnya didefinisikan oleh implementasi kelas moniker tertentu. Anda dapat menentukan jenis komposisi nongenerik baru jika Anda menulis kelas moniker baru. Sebaliknya, komposisi generik didefinisikan oleh OLE. Monikers yang dibuat sebagai hasil dari komposisi generik disebut moniker komposit generik.

Ketiga kelas ini, moniker file, moniker item, dan moniker komposit generik, semuanya bekerja sama, dan mereka adalah kelas moniker yang paling umum digunakan.

Klien Moniker harus memanggil IMoniker::ComposeWith untuk membuat komposit di moniker dengan yang lain. moniker itu dipanggil secara internal memutuskan apakah dapat melakukan komposisi generik atau nongenerik. Jika implementasi moniker menentukan bahwa komposisi generik dapat digunakan, OLE menyediakan fungsi CreateGenericComposite untuk memfasilitasi hal ini.

Anti-Monikers

Monikers Kelas

File Monikers

Moniker Item

Penunjuk Monikers