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


Метод 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