IDataModelManager2::RegisterNamedModel-Methode (dbgmodel.h)
Die RegisterNamedModel-Methode registriert ein bestimmtes Datenmodell unter einem bekannten Namen, sodass es von Clients gefunden werden kann, die es erweitern möchten. Dies ist der Hauptzweck der API, um ein Datenmodell als etwas zu veröffentlichen, das erweitert werden kann, indem das unter diesem bekannten Namen registrierte Modell abgerufen und ein übergeordnetes Modell hinzugefügt wird. Während die im Argument modelName übergebene Zeichenfolge alles sein kann (es handelt sich nur um einen Namen), gibt es eine Konvention, dass sie wie ein punkttrennter Namespace der folgenden Form aussieht:
• Debugger.Models.* - Data models which pertain to the debug target.
• DataModel.Models.* - Data models which pertain to the core data model itself.
o DataModel.Models.Concepts.* - Data models which pertain to concepts in the data model.
Ein Beispiel für einen solchen Namen ist Debugger.Models.Process. Dies ist der Name, unter dem die Vorstellung eines Prozesses des Debuggers registriert wird. Ein Client, der den Prozess erweitert und selbst erweiterbar ist, kann seinen Erweiterbarkeitspunkt als Debugger.Models.Process.NamedExtensionPoint registrieren, wobei NamedExtensionPoint auf die dem Prozess hinzugefügte Semantik verweist.
Beachten Sie, dass, wenn ein bestimmtes Datenmodell unter einem Namen registriert ist, die Implementierung von IDataModelConcept für dieses Datenmodell über eine GetName-Methode verfügen muss, die den Namen zurückgibt, der über das Aufrufen dieser RegisterNamedModel-Methode registriert wurde.
Syntax
HRESULT RegisterNamedModel(
PCWSTR modelName,
IModelObject *modeObject
);
Parameter
modelName
Der Stammnamespace des Datenmodells wird hier zurückgegeben.
modeObject
Das zu registrierende Datenmodell.
Rückgabewert
Diese Methode gibt HRESULT zurück, das auf Erfolg oder Fehler hinweist.
Hinweise
Beispielcode
ComPtr<IDataModelManager2> spManager; /* get the data model manager */
ComPtr<IModelObject> spDataModelObject; /* get your data model object (see
CreateDataModelObject) */
// If the model is registered under a name (e.g.:
// Debugger.Models.Process.PrivateProcessExtension as below), the
// IDataModelConcept::GetName method must return one of the registration
// names (the one the extension considers "canonical"). It is legal for an
// object to be registered under multiple names.
if (SUCCEEDED(spManager->RegisterNamedModel(
L"Debugger.Models.Process.PrivateProcessExtension",
spDataModelObject.Get()))
)
{
// The model object spDataModelObject is now registered and can be looked up
// under the name "Debugger.Models.Process.PrivateProcessExtension".
// This means others can extend it by fetching that name.
//
// Fetch it back as example:
ComPtr<IModelObject> spFetchedModel;
if (SUCCEEDED(spManager->AcquireNamedModel(
L"Debugger.Models.Process.PrivateProcessExtension",
&spFetchedModel))
)
{
// spFetchedModel should be the same as spDataModelObject
}
}
IDataModelManager2-Schnittstelle
Anforderungen
Anforderung | Wert |
---|---|
Header | dbgmodel.h |