事件定义继承其父代的属性。
缺省情况下,事件定义将继承其父代的属性描述和扩展数据元素描述。但是,子事件定义可能由于特定限制而覆盖这些继承的描述。将事件定义添加至事件目录时,该目录将验证新事件定义是否未违反管理继承的规则;如果违反,将抛出
InheritanceNotValidException 异常。同样,如果您替换了具有子代的现有事件定义,事件目录将验证现有继承关系的有效性,如果其中任何一个不再有效,将抛出 InheritanceNotValidException 异常。除非所有
继承关系都有效,否则无论在哪种情况下都不会将新的事件定义添加到目录中。
事件定义可以
未解析或
已解析形式存在:
- 未解析事件定义仅包括事件定义本身内部定义的那些属性定义和扩展数据元素描述。
- 已解析事件定义包括未解析事件定义中的数据及其继承的属性定义和扩展数据元素描述。
覆盖继承的属性描述
除非子事件定义已具有一个同名同路径(请注意大小写很重
要)的本地定义的属性描述,否则它将按原样从其父代那里继承每个属性描述。如果子代有一个名称和路径与父代相同的属性描述,则子描述的字段可以覆盖父描述的字段,如下所示:
- 缺省值
- 子代可以覆盖父属性描述指定的缺省值。如果子代未指定缺省值,它将继承父代的值。
- 必需或可选
- 子代始终覆盖父代。但是,如果父代将某个属性定义为必需的,则子代也必须将该属性指定为必需的。继承的必需属性无法重新定义为可选属性。
- 允许值或最小值和最大值
- 如果父代定义了允许值或最小值和最大值,则子代可以通过指定允许值或最小值和最大值来覆盖它们。注意,一个事件定义只能包含允许值或最小值和最大值,不能同时包含两者:
- 如果父代定义了最小值和最大值,而子代定义了允许值,将忽略父代定义的最小值和最大值。
- 如果父代定义了允许值,而子代定义了最小值和最大值,将忽略父代定义的允许值。
- 如果父代只定义了最大值,而子代只定义了最小值,则子代将继承父代定义的最大值。
- 如果子代未指定允许值或最小值和最大值,将继承父代指定的值。
覆盖继承的扩展数据元素描述
子事件定义按原样从其父代那里继承每个扩展数据元素描述,除非它已有一个同名、本地定义的扩展数据元素描述。如果子代有一个同名的扩展数据元素描述,子描述的字段可以覆盖父描述的字段,如下所示:
- 类型
- 子代必须指定与父代相同的类型。
- 最小显示
- 子代始终覆盖父代。
- 最大显示
- 子代始终覆盖父代。
- 缺省值
- 子代可以覆盖父代扩展数据元素描述指定的缺省值。如果子代未指定缺省值,它将继承父代的值。
- 缺省十六进制值
- 子代可以覆盖父代扩展数据元素描述指定的缺省十六进制值。如果子代未指定缺省十六进制值,它将继承父代的值。
- 嵌套的扩展数据元素描述
- 子代可以通过定义一个同名的嵌套描述来覆盖一个嵌套的扩展数据元素描述。如果子代覆盖一个继承的嵌套描述,则相同的规则适用于覆盖个别字段。如果子代未指定一个同名嵌套的扩展数据元素描述,它将继承父代的嵌套描述。