タイトルは少し不明瞭に聞こえますが、用語についてはよくわかりません。しかし、私の問題は次のとおりです。現在、いくつかのモジュールで構成されるソフトウェアのライセンス検証機能を実装しています。たとえば、関数呼び出しは次のようLicense.IsModuleEnabled(m As Module)
になります (コードは VB.NET にあります)。
つまり、あるモジュールが前提条件として別のモジュールを必要とすることはよくあることです。たとえば、ModuleA を実行するには、ModuleB も有効にする必要があります。したがって、Module
クラスにRequiredModules
は、のリストであるという公開番号がありModule
ます。したがって、IsModuleEnabled()
関数は次のようになります。
Public Function(m As Module)
...
For Each module In m.RequiredModules
If Not IsModuleEnabled(module) Then Return False
End For
...
End Function
問題は明らかです (ただし、解決策は私にはわかりません)。ModuleA が ModuleB を必要とし、ModuleB が ModuleA を必要とする場合、関数はデッド ループになります。
これらのモジュールは互いに並列であるため、そのような検証機能を管理する方法がわかりません。私たちの現在の解決策は、一部の「基本的な」モジュールのみを にリストできるようにすることですRequiredModules
が、長期的には、すべてのモジュールをリストに表示できるようにする方がよいでしょう。