当我从StructureDefinition
生成代码时,将base
中引用的资源的类用作超类是显而易见的。
如果base
被覆盖,则基于其他资源的资源可以更改String
资源的属性类型(例如,从List<String>
更改为max="0"
max="*"
)。
这会破坏强类型语言,因为子类必须符合超类的接口(只能专门化但不能泛化)。
处理这个问题的正确策略是什么?
我可以使用snapshot
代替differential
,而不是扩展base
资源的类。
我是否还应扩展其中一个更常规的超类,例如Element
,BackboneElement
,Resource
,DomainResource
?
我的推理是否有任何缺陷?
答案 0 :(得分:1)
资源无法“扩展”其他资源。如果基本资源具有1..1元素的基数,则派生模型不能将低于1的基数更改为高于1的基数。
“扩展”资源的主要方式是利用“扩展”元素,该元素在基础资源中几乎无处不在。所以从技术上讲,当你创建一个配置文件时,你总是在制约 - 要么收紧核心元素,要么至少限制对“扩展”元素的一些重复的期望。
您可以找到有关允许的基数更改的更多信息here