我有一個現有的Eclipse插件提供了一個擴展點。該插件使用標準的Eclipse機制來查找擴展。在這個插件的代碼中,以下代碼用於獲取擴展名。覆蓋現有的Eclipse插件擴展
IConfigurationElement[] config = Platform.getExtensionRegistry()
.getConfigurationElementsFor(extensionPoint);
if (config.length > 0) {
return config[0];
}
正如你在代碼中看到的,只有第一個找到的擴展名被使用。這個插件已經提供了一個擴展,這個擴展在默認情況下使用。
現在我需要重寫默認擴展的行爲,所以我創建了一個新的插件並擴展了相同的擴展點。但事實證明,默認擴展名總是IConfigurationElement
陣列中的第一個擴展名,所以它總是被拾取。
如何讓我自己的插件首先出現在找到的IConfigurationElement
數組中,然後使用我自己的插件而不是默認的插件?
現有的插件是由其他人編寫的,我不想在它絕對必要之前對其進行更改。
ExtensionRegistry以非確定方式返回擴展。即在不同的計算機上以不同的順序安裝插件可能會首先返回覆蓋,但這不能保證。擴展點消費者的工作是對他們想要的擴展進行排序/優先/選擇。 –