Compartir a través de


Método IDataModelManager4::RegisterExtensionForTypeSignature (dbgmodel.h)

El método RegisterExtensionForTypeSignature es similar al método RegisterModelForTypeSignature con una diferencia clave. El modelo de datos que se pasa a este método no es el visualizador canónico de ningún tipo y no se ocupará de la presentación de la vista nativa o de idioma de ese tipo. El modelo de datos que se pasa a este método se agregará automáticamente como elemento primario a cualquier tipo concreto que coincida con la firma de tipo proporcionada.

A diferencia del método RegisterModelForTypeSignature, no hay ningún límite en firmas de tipo idénticas o ambiguas que se registran como extensiones en un tipo determinado (o conjunto de tipos). Cada extensión cuya firma de tipo coincide con una instancia de tipo concreto determinada hará que el modelo de datos registrado a través de este método se asocie automáticamente a objetos recién creados como modelos primarios. Esto, en efecto, permite que un número arbitrario de clientes extienda un tipo (o conjunto de tipos) con nuevos campos o funcionalidades.

Sintaxis

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

Parámetros

typeSignature

Firma de tipo con la que se registrará el modelo de datos proporcionado como una extensión. Todos los objetos nativos o de lenguaje cuyo tipo concreto coincida con esta firma tendrán asociado automáticamente el modelo de datos dado como modelo primario.

dataModel

Modelo de datos que se agregará automáticamente como modelo primario a todos los objetos nativos o de lenguaje con un tipo concreto que coincida con la firma de tipo proporcionada.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error.

Observaciones

de código de ejemplo

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

Requisitos

Requisito Valor
encabezado de dbgmodel.h

Consulte también

interfaz IDataModelManager4