Поделиться через


CreationPolicy Перечисление

Определение

Указывает, когда и как будет создаваться экземпляр части.

public enum class CreationPolicy
public enum CreationPolicy
type CreationPolicy = 
Public Enum CreationPolicy
Наследование
CreationPolicy

Поля

Any 0

Указывает, что объектом CompositionContainer будет использоваться наиболее подходящая политика CreationPolicy для части с учетом текущего контекста. Это политика CreationPolicy по умолчанию. По умолчанию объектом CompositionContainer используется значение политики Shared, если частью ComposablePart или импортером не запрашивается значение NonShared.

NonShared 2

Указывает, что новый, не являющийся общим экземпляр связанной части ComposablePart будет создан объектом CompositionContainer для каждого инициатора запроса.

Shared 1

Указывает, что объектом ComposablePart будет создан один общий экземпляр связанной части CompositionContainer, который будет совместно использоваться всеми инициаторами запросов.

Комментарии

В процессе композиции для заполнения импорта CompositionContainer требуются экземпляры объектов, описанных с помощью exports. Если для заполнения нескольких операций импорта используется один экспорт, возможны два варианта поведения. Создается либо один экземпляр экспортированного объекта, и каждому средству импорта предоставляется ссылка на один и тот же объект, либо создается отдельный экземпляр экспортированного объекта для каждого средства импорта.

Поведение зависит от CreationPolicy свойства объекта , PartCreationPolicyAttribute присоединенного к экспорту, и RequiredCreationPolicy свойства ImportAttributeобъекта . Оба из них будут содержать значение из перечисления CreationPolicy . Если политики несовместимы, экспорт не будет считаться совпадением для данного импорта. В следующей таблице показано взаимодействие этих двух свойств.

RequiredCreationPolicy CreationPolicy Для параметра Export задано значение Any или None. CreationPolicy Для параметра экспорта указано значение Shared CreationPolicy Параметр экспорта указывает nonShared
Любой Будет создан один общий экземпляр экспортированного объекта. Будет создан один общий экземпляр экспортированного объекта. Для каждого средства импорта будет создан новый экземпляр экспортированного объекта.
Совмещаемая блокировка Будет создан один общий экземпляр экспортированного объекта. Будет создан один общий экземпляр экспортированного объекта. Экспорт не будет считаться совпадением для импорта.
Не общий доступ Для каждого средства импорта будет создан новый экземпляр экспортированного объекта. Экспорт не будет считаться совпадением для импорта. Для каждого средства импорта будет создан новый экземпляр экспортированного объекта.

Применяется к