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


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