我创建了一个扩展点,我试图在其他插件中实现该扩展。在某段时间后,我需要在运行时删除该扩展。所以当前我正在使用下面的代码(反思调用)
我的代码在这里:
IExtensionRegistry reg = Platform.getExtensionRegistry();
Field privateStringField = ExtensionRegistry.class.getDeclaredField("masterToken"); //$NON-NLS-1$
privateStringField.setAccessible(true);
Object masterToken = privateStringField.get(reg);
IConfigurationElement[] config = reg.getConfigurationElementsFor("com.temp.rcp.product");
for (IConfigurationElement configElement : config) {
if (configElement.getAttribute("name").equals("Temp")) {
reg.removeExtension(configElement.getDeclaringExtension(), masterToken);
}
}
我查看了代码并找到了一个解决方案,但这是完全不可接受的,因为当我更新我的eclipse目标平台时,由于反射调用,它可能/将会中断。
你们中的任何人都可以帮助我解决上述问题。