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

Примером такого имени является Отладчик.Models.Process. Это имя, в котором регистрируется понятие отладчика процесса. Клиент, который расширяет процесс и сам является расширяемым, может зарегистрировать свою точку расширяемости в качестве отладчика.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