Metode IDataModelManager2::RegisterExtensionForTypeSignature (dbgmodel.h)

Metode RegisterExtensionForTypeSignature mirip dengan metode RegisterModelForTypeSignature dengan satu perbedaan utama. Model data yang diteruskan ke metode ini bukan penampil visual kanonis untuk jenis apa pun dan tidak akan mengambil alih tampilan tampilan asli/bahasa dari jenis tersebut. Model data yang diteruskan ke metode ini akan secara otomatis ditambahkan sebagai induk ke jenis beton apa pun yang cocok dengan tanda tangan jenis yang disediakan.

Tidak seperti metode RegisterModelForTypeSignature, tidak ada batasan pada tanda tangan jenis yang identik atau ambigu yang didaftarkan sebagai ekstensi ke jenis tertentu (atau set jenis). Setiap ekstensi yang tanda tangan jenisnya cocok dengan instans jenis konkret tertentu akan menyebabkan model data yang terdaftar melalui metode ini secara otomatis dilampirkan ke objek yang baru dibuat sebagai model induk. Ini, berlaku, memungkinkan jumlah klien arbitrer untuk memperluas jenis (atau set jenis) dengan bidang atau fungsionalitas baru.

Sintaks

HRESULT RegisterExtensionForTypeSignature(
  IDebugHostTypeSignature *typeSignature,
  IModelObject            *dataModel
);

Parameter

typeSignature

Tanda tangan jenis di mana model data yang disediakan akan didaftarkan sebagai ekstensi. Setiap objek asli/bahasa yang jenis konkretnya cocok dengan tanda tangan ini akan memiliki model data yang diberikan yang dilampirkan sebagai model induk secara otomatis.

dataModel

Model data yang akan secara otomatis ditambahkan sebagai model induk ke setiap objek asli/bahasa dengan jenis konkret yang cocok dengan tanda tangan jenis yang disediakan.

Mengembalikan nilai

Metode ini mengembalikan HRESULT yang menunjukkan keberhasilan atau kegagalan.

Keterangan

Kode Sampel

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost;           /* get the debug host */

ComPtr<IModelObject> spDataModel;    /* create a data model (see 
                                        CreateDataModelObject) */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    // Create a signature to match MyType<*>
    ComPtr<IDebugHostTypeSignature> spTypeSignature;
    if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
    {
        // Register the model for std::vector<*>
        if (SUCCEEDED(spManager->RegisterExtensionForTypeSignature(
            spTypeSignature.Get(), 
            spDataModel.Get())
            )
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  This data model is considered an "extension"
            // (adding properties).  It will not be counted as a visualizer and 
            // will not "take over" the display of the type
        }
    }
}

Antarmuka IDataModelManager2

Persyaratan

Persyaratan Nilai
Header dbgmodel.h