CreationPolicy 枚举

定义

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

C#
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 将为每个导入程序创建导出对象的新实例。 导出不会被视为与导入匹配项。 将为每个导入程序创建导出对象的新实例。

适用于

产品 版本
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1