e4 设置 ESelectionService 为空

e4 Set ESelectionService Null

在执行方法后,我想设置当前选择 null。我做到了这一点,但它行不通。之后,selection 仍然持有 a 值,该值不为空。

    @Inject
    private ESelectionService selection;

    @Execute
    public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) {
        if (true) {
           //do something!
           final Object NULL_OBJECT = new Object();
           selection.setSelection(NULL_OBJECT);
        }
    }

有多种选择服务,每个上下文一个 (IEclipseContext)。您可能在错误的上下文中设置了选择。

ESelectionService 作为 class 的字段注入可能意味着您最终得到了错误的服务。始终将其作为 execute 方法的参数注入。

... no field injection

@Execute
public void execute(ESelectionService selection, @Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) {