您可以在模型中定义 CORBA 联合,并在 .idl 文件中生成这些联合。
过程
要定义 CORBA 联合:
- 向构造型为 CORBAModule 包添加新类型或添加构造型为 CORBAInterface 的类。
- 对创建的类型打开“功能部件”窗口,然后将“种类”字段设置为 Union。
- 对于创建的类型,请将 CORBA::Type::Discriminator 属性的值设置为您将使用的鉴别器的类型,例如 short。
- 向该类型添加属性(代表联合中的每种数据类型),例如名为 length_short、length_long 和 length_double 的属性。
- 对于每个属性,相应地设置属性类型,例如:short 代表 length_short,long 代表 length_long,double 代表 length_double。
- 对于每个属性,打开“功能部件”窗口,然后设置属性 CORBA::Attribute::UnionCase 的值。属性的值应该为用于该属性的鉴别器值。
值应该反映为属性 CORBA::Type::Discriminator 指定的类型。请注意,对于您希望用作联合的缺省数据类型的数据类型,您也可以将属性 UnionCase 设置为字符串 default。例如,对于属性 length_short,将 UnionCase 属性的值设置为 1,对于属性 length_long,设置为 2,对于属性 length_double,设置为 default。
示例
如果您使用这些步骤中提及的示例值,那么生成的代码与以下代码类似:
union length switch (short) {
case 1 : short length_short; //## attribute length_short
case 2 : long length_long; //## attribute length_long
default : double length_double; //## attribute length_double
};