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


Метод IDataModelManager::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.
            }
        }
    }
}

Требования

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

См. также раздел

Интерфейс IDataModelManager