Método IDataModelManager4::RegisterExtensionForTypeSignature (dbgmodel.h)
El método RegisterExtensionForTypeSignature es similar al método RegisterModelForTypeSignature con una diferencia clave. El modelo de datos que se pasa a este método no es el visualizador canónico de ningún tipo y no se ocupará de la presentación de la vista nativa o de idioma de ese tipo. El modelo de datos que se pasa a este método se agregará automáticamente como elemento primario a cualquier tipo concreto que coincida con la firma de tipo proporcionada.
A diferencia del método RegisterModelForTypeSignature, no hay ningún límite en firmas de tipo idénticas o ambiguas que se registran como extensiones en un tipo determinado (o conjunto de tipos). Cada extensión cuya firma de tipo coincide con una instancia de tipo concreto determinada hará que el modelo de datos registrado a través de este método se asocie automáticamente a objetos recién creados como modelos primarios. Esto, en efecto, permite que un número arbitrario de clientes extienda un tipo (o conjunto de tipos) con nuevos campos o funcionalidades.
Sintaxis
HRESULT RegisterExtensionForTypeSignature(
IDebugHostTypeSignature *typeSignature,
IModelObject *dataModel
);
Parámetros
typeSignature
Firma de tipo con la que se registrará el modelo de datos proporcionado como una extensión. Todos los objetos nativos o de lenguaje cuyo tipo concreto coincida con esta firma tendrán asociado automáticamente el modelo de datos dado como modelo primario.
dataModel
Modelo de datos que se agregará automáticamente como modelo primario a todos los objetos nativos o de lenguaje con un tipo concreto que coincida con la firma de tipo proporcionada.
Valor devuelto
Este método devuelve HRESULT que indica éxito o error.
Observaciones
de código de ejemplo
ComPtr<IDataModelManager4> 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->RegisterExtensionForTypeSignature(
spTypeSignature.Get(),
spDataModel.Get())
)
{
// Every instance matching MyType<*> will now have spDataModel
// attached as the parent. This data model is considered an "extension"
// (adding properties). It will not be counted as a visualizer and
// will not "take over" the display of the type
}
}
}
Requisitos
Requisito | Valor |
---|---|
encabezado de |
dbgmodel.h |
Consulte también