Compartilhar via


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

O método RegisterExtensionForTypeSignature é semelhante ao método RegisterModelForTypeSignature com uma diferença fundamental. O modelo de dados que é passado para esse método não é o visualizador canônico para qualquer tipo e não assumirá a exibição da exibição nativa/de idioma desse tipo. O modelo de dados que é passado para esse método será adicionado automaticamente como pai a qualquer tipo concreto que corresponda à assinatura de tipo fornecida.

Ao contrário do método RegisterModelForTypeSignature, não há limite para assinaturas de tipo idênticas ou ambíguas sendo registradas como extensões para um determinado tipo (ou conjunto de tipos). Cada extensão cuja assinatura de tipo corresponde a uma determinada instância de tipo concreto fará com que o modelo de dados registrado por meio desse método seja anexado automaticamente a objetos recém-criados como modelos pai. Isso, na verdade, permite que um número arbitrário de clientes estenda um tipo (ou conjunto de tipos) com novos campos ou funcionalidades.

Sintaxe

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

Parâmetros

typeSignature

A assinatura de tipo na qual o modelo de dados fornecido será registrado como uma extensão. Cada objeto nativo/idioma cujo tipo concreto corresponde a essa assinatura terá o modelo de dados fornecido anexado automaticamente como um modelo pai.

dataModel

O modelo de dados que será adicionado automaticamente como um modelo pai a cada objeto nativo/idioma com um tipo concreto que corresponda à assinatura de tipo fornecida.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

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

Interface IDataModelManager2

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h