蛋糕图案的一大局限是它的静态性。我希望能够完全独立地混合可能由不同编码人员编写的特征。然而特征不会需要经常混入。在运行主应用程序之前,用户将有一个初始化屏幕,他们将在其中选择特征/程序集。所以我想到为什么不在用户选择选择模块中混合和编译选择的特征。如果编译失败,用户只会收到一些消息——不兼容的程序集或其他任何问题。如果编译成功,那么顶层 UI 模块将加载新编译的类以及程序集的预编译部分并运行主应用程序。请注意,在运行时初始化期间可能只需要编译一两个类。所有其余的代码都可以正常编译。
我对 Scala 很陌生。这是公认的模式吗?有什么支持吗?对于相对简单的依赖情况,不得不使用 Guice 似乎很疯狂。我可以在应用程序中轻松运行 Scala 编译器吗?我可以在内存中运行它并从内存中使用它的输出而无需创建不必要的文件吗?
注意:虽然看起来是动态的,但这种方法将保持100% 静态。
编辑它发生在 Microsoft 的 Roslyn 项目的驱动力之一是为 C# 和 Visual Basic 启用这种东西。但这似乎是一个相当大的项目,即使对于一个强大的微软团队来说也是如此。