CreationPolicy 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定何时以及如何实例化部件。
public enum class CreationPolicy
public enum CreationPolicy
type CreationPolicy =
Public Enum CreationPolicy
- 继承
字段
Any | 0 | 指定 CompositionContainer 将为部件使用给定当前上下文中最适当的 CreationPolicy。 这是默认的 CreationPolicy。 默认情况下,除非 CompositionContainer 或导入程序请求 Shared,否则 ComposablePart 将使用 NonShared。 |
NonShared | 2 | 指定将由 ComposablePart 为每个请求者创建一个关联的 CompositionContainer 的新的非共享实例。 |
Shared | 1 | 指定将由 ComposablePart 创建关联的 CompositionContainer 的单个共享实例,并由所有请求者共享该实例。 |
注解
在组合过程中, CompositionContainer 需要导出描述的 对象的实例才能填充导入。 如果使用一个导出填充多个导入,则有两种可能的行为。 创建导出对象的单个实例,并为每个导入程序提供对同一对象的引用,或者为每个导入程序创建导出对象的单独实例。
发生哪种行为取决于 CreationPolicy 附加到导出的 PartCreationPolicyAttribute 的 属性和 RequiredCreationPolicy 的 ImportAttribute。 这两个都将包含 枚举中的 CreationPolicy 值。 如果策略不兼容,则不会将该导出视为给定导入的匹配项。 下表总结了这两个属性的交互。
RequiredCreationPolicy | 导出的 CreationPolicy 指定 Any 或 none 指定。 | 导出的 CreationPolicy 指定共享 | 导出的 CreationPolicy 指定 NonShared |
---|---|---|---|
任意 | 将创建导出对象的单个共享实例。 | 将创建导出对象的单个共享实例。 | 将为每个导入程序创建导出对象的新实例。 |
共享 | 将创建导出对象的单个共享实例。 | 将创建导出对象的单个共享实例。 | 导出不会被视为与导入匹配项。 |
NonShared | 将为每个导入程序创建导出对象的新实例。 | 导出不会被视为与导入匹配项。 | 将为每个导入程序创建导出对象的新实例。 |