CreationPolicy 枚举

定义

指定何时以及如何实例化部件。

public enum class CreationPolicy
public enum CreationPolicy
type CreationPolicy = 
Public Enum CreationPolicy
继承
CreationPolicy

字段

Any 0

指定 CompositionContainer 将为部件使用给定当前上下文中最适当的 CreationPolicy。 这是默认的 CreationPolicy。 默认情况下,除非 CompositionContainer 或导入程序请求 Shared,否则 ComposablePart 将使用 NonShared

NewScope 3
NonShared 2

指定将由 ComposablePart 为每个请求者创建一个关联的 CompositionContainer 的新的非共享实例。

Shared 1

指定将由 ComposablePart 创建关联的 CompositionContainer 的单个共享实例,并由所有请求者共享该实例。

注解

在撰写过程中,需要导出描述的对象的实例 CompositionContainer ,以便填充导入。 如果使用一个导出来填充多个导入,则有两种可能的行为。 要么创建导出对象的单个实例,然后向每个导入程序提供对同一对象的引用,要么为每个导入程序创建导出对象的单独实例。

发生哪种行为取决于附加到导出的 的 属性 CreationPolicy PartCreationPolicyAttribute 和 的 RequiredCreationPolicy ImportAttribute 。 这两者都将包含 枚举 CreationPolicy 中的值。 如果策略不兼容,该导出不会被视为与给定导入的匹配项。 下表总结了这两个属性的交互。

RequiredCreationPolicy Export 的 CreationPolicy 指定"任何"或"未指定"。 导出的 CreationPolicy 指定共享 Export 的 CreationPolicy 指定 NonShared
任意 将创建导出对象的单个共享实例。 将创建导出对象的单个共享实例。 将针对每个导入程序创建导出对象的新实例。
共享 将创建导出对象的单个共享实例。 将创建导出对象的单个共享实例。 导出不会被视为与导入匹配。
NonShared 将针对每个导入程序创建导出对象的新实例。 导出不会被视为与导入匹配。 将针对每个导入程序创建导出对象的新实例。

适用于