gpt4 book ai didi

java - Eclipse EMF - 有没有一种方法可以在不同的 Eclipse 插件中引用属于模型一部分的类,而无需存储 tostring()?

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:30 25 4
gpt4 key购买 nike

Eclipse 插件模型中的一个类需要引用完全不同的模型和插件中的另一个类。

为此,我找到了这个 thread ,这建议使用 edatatype 并使用我需要链接到的类型初始化其实例类。但是,当我尝试链接到不同模型中的类时,它会保存类的 tostring,如下例所示

<tasks description="" id="p1.tsk4" label="1" type="place" time="10">
<requiredCapabilityDescriptor>cod.gen.impl.CapabilityDescriptorImpl@78483404 (description: , id: cap2, label: ) (parent: null)</requiredCapabilityDescriptor>
<involvedResource>cod.gen.impl.ResourceDescriptorImpl@2839ac4c (description: null, id: null, label: null) (cad: null, material: null, pointySurface: &lt;unset>, sharpEdges: &lt;unset>, thumbnail: null, weight: &lt;unset>) (changeCost: null, generic: &lt;unset>, investCost: null, manufacturer: null)</involvedResource>
</tasks>

在此示例中,我链接到两个不同的外部类 CapabilityDescriptorImpl 和 ResourceDescriptorImpl。正如您所看到的 tostring 的存储,这在存储和可读性方面不方便,而且我不太确定这种情况下的一致性处理(我的意思是删除、编辑引用的实例)。根据线程,写入 tostring 是因为我选择了可​​序列化的数据类型,我尝试将其设置为不可序列化,但这不起作用。

所以我尝试了另一种使用 eReference 的方法,它将要保存的字符串最小化为

<tasks description="" id="p1.tsk4" label="1" type="place" time="10">
<requiredCapabilityDescriptor xsi:type="CoD:CapabilityDescriptor" description="" id="cap2" label=""/>
<involvedResource xsi:type="CoD:ResourceDescriptor"/>
</tasks>

在可读性和存储方面要好得多,但我真的怀疑它是一个实际的引用,它不包含任何可以引用原始实例的内容。实际上我确信它不是指原始对象,因为它没有显示任何 econtainer。再次是一致性问题。

我能想到的最后一个选择是存储引用对象的 URI,但在这种情况下,我必须自己管理所有一致性问题。

所以我的问题是“有没有更好的方法来实现这个外部类引用?”

最佳答案

灵感来自Generating an Extended EMF Model 。我已完成以下操作:

  1. 首先,我将所有单独的模型文件放入其中一个模型文件的包中。
  2. 将 genmodel 导出到每个包的单独 xsd。
  3. 确保每个 xsd 文件中的导入标记都指向导入模型的有效 xsd URL。
  4. 在我的插件中分发 xsd 文件。
  5. 在每个插件中创建 genmodel 时,我只是引用了导入模型的 genmodel(必须以相同的导入顺序生成 genmodel,首先不导入任何模型的模型,然后是仅依赖于它的模型,依此类推)
  6. 现在通常使用引用来指向不同模型中的类。

这创建了一个看起来像这样的 xmI 文件

 <c xmlns:c="platform:/resource/my_project/Resource/c.xsd">
<c:res C:id="r" C:label="r">
<C:des>My.des#//@rDes.0</C:des>
</C:resources>
</C:c>

指向另一个名为 My.des 的 XMI 文件

关于java - Eclipse EMF - 有没有一种方法可以在不同的 Eclipse 插件中引用属于模型一部分的类,而无需存储 tostring()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com