IDataModelManager2::RegisterExtensionForTypeSignature-Methode (dbgmodel.h)

Die RegisterExtensionForTypeSignature-Methode ähnelt der RegisterModelForTypeSignature-Methode mit einem Schlüsselunterschied. Das Datenmodell, das an diese Methode übergeben wird, ist nicht die kanonische Visualisierung für einen Typ und übernimmt nicht die Anzeige der nativen/sprachbasierten Ansicht dieses Typs. Das Datenmodell, das an diese Methode übergeben wird, wird automatisch als übergeordnetes Element jedem konkreten Typ hinzugefügt, der der angegebenen Typsignatur entspricht.

Im Gegensatz zur RegisterModelForTypeSignature-Methode gibt es keine Beschränkung für identische oder mehrdeutige Typsignaturen, die als Erweiterungen für einen bestimmten Typ (oder eine Gruppe von Typen) registriert werden. Jede Erweiterung, deren Typsignatur einem bestimmten konkreten Typ instance entspricht, bewirkt, dass das über diese Methode registrierte Datenmodell automatisch als übergeordnete Modelle an neu erstellte Objekte angefügt wird. Dies ermöglicht es einer beliebigen Anzahl von Clients, einen Typ (oder satz von Typen) um neue Felder oder Funktionen zu erweitern.

Syntax

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

Parameter

typeSignature

Die Typsignatur, für die das angegebene Datenmodell als Erweiterung registriert wird. Für jedes Native-/Sprachobjekt, dessen konkreter Typ dieser Signatur entspricht, wird das angegebene Datenmodell automatisch als übergeordnetes Modell angefügt.

dataModel

Das Datenmodell, das automatisch als übergeordnetes Modell jedem Native-/Language-Objekt mit einem konkreten Typ hinzugefügt wird, der der angegebenen Typsignatur entspricht.

Rückgabewert

Diese Methode gibt HRESULT zurück, das auf Erfolg oder Fehler hinweist.

Hinweise

Beispielcode

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
        }
    }
}

IDataModelManager2-Schnittstelle

Anforderungen

Anforderung Wert
Header dbgmodel.h