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


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

Метод GetModelForType возвращает модель данных, которая является каноническим визуализатором для данного экземпляра типа. Фактически этот метод находит наиболее подходящую сигнатуру типа, которая была зарегистрирована при предыдущем вызове метода RegisterModelForTypeSignature, и возвращает связанную модель данных.

Синтаксис

HRESULT GetModelForType(
  IDebugHostType             *type,
  IModelObject               **dataModel,
  IDebugHostTypeSignature    **typeSignature,
  IDebugHostSymbolEnumerator **wildcardMatches
);

Параметры

type

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

dataModel

Здесь будет возвращена модель данных, которая является каноническим визуализатором для данного экземпляра типа, определяемого сигнатурой наиболее подходящего типа, зарегистрированной с помощью предварительного вызова RegisterModelForTypeSignature. Эта модель данных будет автоматически присоединена к любому собственному или языковому объекту, созданному с типом, указанным аргументом типа.

typeSignature

Подпись типа, совпадение которой с типом привело к возврату модели данных, зарегистрированной из предыдущего вызова RegisterModelForTypeSignature, с возвращаемой сигнатурой типа.

wildcardMatches

Если в сигнатуре, возвращаемой в аргументе typeSignature, есть подстановочные знаки, здесь возвращается перечислитель всех совпадений между подстановочными знаками и конкретным экземпляром типа, указанным в аргументе типа.

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

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

Комментарии

Образец кода

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHostModule> spModule;   /* get a module */

// Find the type of "MyType<int>" within the module
ComPtr<IDebugHostType> spType;
if (SUCCEEDED(spModule->FindTypeByName(L"MyType<int>", &spType)))
{
    // Find the canonical visualizer which would be applied to MyType<int>
    ComPtr<IModelObject> spDataModel;
    ComPtr<IDebugHostTypeSignature> spSignature;
    ComPtr<IDebugHostSymbolEnumerator> spWildcardMatches;

    if (SUCCEEDED(spManager->GetModelForType(spType.Get(), 
                                             &spDataModel, 
                                             &spSignature, 
                                             &spWildcardMatches)))
    {
        // There is a visualizer which matched.
        // spDataModel is the data model object which was registered as 
        //     the canonical visualizer (RegisterModelForTypeSignature)
        // spSignature is the signature which that data model was registered 
        //     against (e.g.: created for MyType<*> via
        //     CreateTypeSignature/RegisterModelForTypeSignature)
        // spWildcardMatches is an enumerator of the wildcard matches between 
        //     the specific type spType and the signature spSignature (here 
        //     int matched *, so there will be one item -- the type 'int' in
        //     the enumerator)
    }

Требования

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

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

Интерфейс IDataModelManager2