Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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 |