Поделиться через


Метод IDataModelManager2::GetModelForTypeSignature (dbgmodel.h)

Метод GetModelForTypeSignature возвращает модель данных, зарегистрированную для определенной сигнатуры типа, с помощью предварительного вызова метода RegisterModelForTypeSignature. Модель данных, возвращаемая этим методом, считается каноническим визуализатором для любого типа, соответствующего переданной сигнатуре типа. Как канонический визуализатор, эта модель данных берет на себя отображение типа. Обработчики отображения по умолчанию скрывают собственные и языковые конструкции объекта в пользу представления объекта, представленного моделью данных.

Синтаксис

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

Параметры

typeSignature

Сигнатура типа, для которой dataModel будет зарегистрирована в качестве канонического визуализатора. Любой объект, созданный с типом машинного или языкового языка, который соответствует сигнатуре (и для которого нет лучшей сигнатуры типа), будет автоматически присоединять возвращаемую модель данных в качестве родительской.

dataModel

Модель данных, зарегистрированная в качестве канонического визуализатора для всех экземпляров типов, соответствующих заданной сигнатуре типа (и для которых нет лучшей совпадающей сигнатуры типа).

Возвращаемое значение

Этот метод возвращает HRESULT, указывающее на успех или сбой.

Комментарии

Образец кода

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->RegisterModelForTypeSignature(spTypeSignature.Get(),
                                                               spDataModel.Get()))
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  Further, such parent is considered 
            // the canonical visualizer for all types matching MyType<*> since it 
            // was registered via RegisterModelForTypeSignature instead of
            // RegisterExtensionForTypeSignature.
            //
            // Demonstrate that we can find the canonical visualizer under 
            // this registration.
            ComPtr<IModelObject> spCanonicalVisualizerModel;
            if (SUCCEEDED(spManager->GetModelForTypeSignature(
                spTypeSignature.Get(), 
                &spCanonicalVisualizerModel)))
            {
                // spCanonicalVisualizerModel is the same as spDataModel since 
                // it was registered as such.
            }
        }
    }
}

Интерфейс IDataModelManager2

Требования

Требование Значение
Заголовок dbgmodel.h