gpt4 book ai didi

java - EMF 编辑域命令创建

转载 作者:行者123 更新时间:2023-12-01 15:33:43 26 4
gpt4 key购买 nike

我现在正在深入研究 EMF,并遇到了以下问题:

我正在尝试使用以下代码从字段集中删除字段:

 FieldElem ff = ds.getContent().getNestedFieldset().get(0).getField().get(0);

Command remove = new RemoveCommand(editingDomain, nf,
DescPackage.eINSTANCE.getNestedFieldsetElem_Field(), ff);
editingDomain.getCommandStack().execute(remove);

ff = ds.getContent().getNestedFieldset().get(0).getField().get(0);

Command remove2 = RemoveCommand.create(editingDomain, nf,
DescPackage.eINSTANCE.getNestedFieldsetElem_Field(), ff);
editingDomain.getCommandStack().execute(remove2);

ff = ds.getContent().getNestedFieldset().get(0).getField().get(0);

Command remove3 = RemoveCommand.create(editingDomain, ff);
editingDomain.getCommandStack().execute(remove3);

前两个命令工作得很好,但第三个命令不行。我什至没有添加到命令堆栈,也没有删除任何内容。我做错了什么?

更新:正如我在调试器中看到的,执行方法返回 UNEXECUTABLE_COMMAND。

最佳答案

指令 RemoveCommand.create(editingDomain, ff) 仅当 ff 作为容器时才能使用(即 ff.eContainer != null)。当您将对象添加到具有包含属性的关系时,eContainer 会由 EMF 自动设置。

remove3 命令肯定不起作用,因为 getField() 关系不是包含关系。

关于java - EMF 编辑域命令创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225001/

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