このスタックオーバーフローの質問で、 Prism / Unityは思ったほど分離されていないことを学びました。たとえば、menuManagerをコンストラクターに注入するこのクラスがある場合、このクラスが実際にどこかに存在することを確認する必要があります(クラスを含む.dllをプルするだけで、コンテナがそれを処理します。たとえば、その場所にnullを挿入します):
public class EmployeesPresenter
{
public EmployeesPresenter(IMenuManager menuManager)
{
}
}
しかし、私はそれに対処することができます:アプリケーションはMenuModuleなしでは実行できません(または、提案されたように、アプリケーションが壊れないようにするだけのNullMenuModuleを持つことができます)。
ただし、私が構築しているアプリケーションでは、MenuModuleにMenuManagerクラスがあり、すべてのモジュールは、メニューに必要なすべてのものをMenuManagerに登録する必要があります。ただし、 MenuModuleを交換できるようにしたいです。たとえば、InfragisticsMenuModuleとTelerikMenuModuleなどがあります。
ただし、CustomersModuleなどにいる場合、TelerikMenuModuleを使用するには、それを参照する必要があります。また、InfragisticsMenuModuleを使用する場合は、それを参照する必要があります。
では、すべてのモジュールを新しい参照で再コンパイルせずに、TelerikMenuModuleをInfragisticsMenuModuleと「ホットスワップ」するにはどうすればよいでしょうか。たとえば、これを置き換えたい場合は次のようになります。
Application.exe
Customers.dll
TelerikMenuModule.dll
これとともに:
Application.exe
Customers.dll
InfragisticsMenuModule.dll
アプリケーションを再起動するだけで、新しいInfragisticsMenuModule.dllで実行され、TelerikMenuModule.dllが存在しなくなったことを通知しません。