1

次のシナリオを検討してください。プラグインには、pluginA、pluginB、pluginC の 3 つがあります。PluginA は pluginB に依存しており、それを再エクスポートします。PluginC は pluginB を利用したいと考えており、pluginA に依存しています。pluginC -> pluginA -> pluginB という依存関係があるので、pluginC はその依存関係として pluginB を追加する必要がありますか?

私はそうすべきではないと信じています。ただし、直接の依存関係 pluginC -> pluginB を追加するとすべて正常に動作しますが、その依存関係を削除して pluginC -> pluginA のままにすると、pluginB のクラスが見つからないというエラーが表示されます。これらのエラーはどのような状況で発生しますか? プラグインの種類 (UI と非 UI) に依存しますか?

ありがとう、アレックス

4

1 に答える 1

3

推移的な依存関係 (C は A に依存し、B に依存する) は機能します。簡単なケースをテストして確認しました。PluginB が、PluginC が使用しようとしているパッケージをエクスポートしていることを確認してください。それが問題でない場合は、エラーに関する詳細を質問に追加してください。

一般に、再エクスポート機能はあまり明示的ではなく、意図しない依存関係 (または、少なくとも認識していない依存関係) を導入する可能性があるため、使用を避けています。代わりに、すべての依存関係を明示的にする (PluginC は PluginB に直接依存する) か、代わりにインポートされたパッケージを使用します (パッケージがどのプラグインからのものであるかは気にせず、どこかから利用できる必要があるだけです)。より柔軟です。

于 2012-08-24T20:43:53.387 に答える