ケーキパターンの大きな制限の1つは、静的であるということです。異なるコーダーによって完全に独立して作成された可能性のある特性をミックスインできるようにしたいと思います。しかし、特性はしません頻繁に混ぜる必要があります。ユーザーには、メインアプリケーションを実行する前に、特性/アセンブリを選択する初期化画面が表示されます。そこで、ユーザー選択選択モジュールで、選択した特性をミックスインしてコンパイルしないのはなぜかという考えが浮かびました。コンパイルが失敗した場合でも、ユーザーはメッセージ(互換性のないアセンブリなど)を返すだけで問題ありません。コンパイルが成功した場合、最上位のUIモジュールは、アセンブリのコンパイル済み部分を含む新しくコンパイルされたクラスをロードし、メインアプリケーションを実行します。実行時の初期化中にコンパイルされるクラスは1つまたは2つだけでよいことに注意してください。残りのコードはすべて正常にコンパイルされている可能性があります。
私はScalaにかなり慣れていません。これは認識されたパターンですか?それに対するサポートはありますか?比較的単純な依存関係の状況でGuiceを使用しなければならないのは気が狂っているようです。アプリケーション内からScalaコンパイラーを簡単に実行できますか?メモリ内で実行し、その出力を不要なファイルを作成せずにメモリから使用できますか?
注:動的に見えますが、この方法は100%静的なままです。
編集すると、MicrosoftのRoslynプロジェクトの推進力の1つは、C#とVisualBasicでこの種のことを可能にすることでした。しかし、それは強力なMicrosoftチームにとってさえかなり大きなプロジェクトだったようです。