Метод IDataModelManager::RegisterNamedModel (dbgmodel.h)

Метод RegisterNamedModel регистрирует определенную модель данных под известным именем, чтобы ее могли найти клиенты, желающие расширить ее. Это основная цель API — опубликовать модель данных как что-то, что может быть расширено путем извлечения модели, зарегистрированной под этим известным именем, и добавления родительской модели в нее. Хотя строка, передаваемая в аргументе modelName, может быть любым (это просто имя), существует соглашение о том, что оно выглядит как пространство имен с разделителями точками следующей формы:

• 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.

Примером такого имени является Debugger.Models.Process. Это имя, под которым регистрируется понятие отладчика процесса. Клиент, который расширяет процесс и сам является расширяемым, может зарегистрировать свою точку расширяемости как Debugger.Models.Process.NamedExtensionPoint, где NamedExtensionPoint ссылается на семантику, добавляемую в процесс.

Обратите внимание, что если определенная модель данных зарегистрирована под именем, реализация IDataModelConcept для этой модели данных должна иметь метод GetName, который возвращает имя, зарегистрированное путем вызова этого метода RegisterNamedModel.

Синтаксис

HRESULT RegisterNamedModel(
  PCWSTR       modelName,
  IModelObject *modeObject
);

Параметры

modelName

Корневое пространство имен модели данных возвращается здесь.

modeObject

Зарегистрированная модель данных.

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

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

Комментарии

Образец кода

ComPtr<IDataModelManager> 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
    }
}

Требования

   
Заголовок dbgmodel.h

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

Интерфейс IDataModelManager