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 需要导出描述的 对象的实例才能填充导入。 如果使用一个导出填充多个导入,则有两种可能的行为。 创建导出对象的单个实例,并为每个导入程序提供对同一对象的引用,或者为每个导入程序创建导出对象的单独实例。

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

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

适用于