PRISM 已经包含 MEF 和 MVVM 逻辑 :)
好的,这里有一点解释:
MVVM 代表应用程序中的逻辑。实际上是 View、View-Model 和 Model 解耦的巧妙方法。不知道有什么最好的(?)框架来做到这一点 - 如果需要,您可以检查Catel或MVVM Light,但它只是来自了解 MVVM 逻辑并使其易于实现的人的大量代码。您实际上可以尝试编写自己的 MVVM 框架并看到“没有秘密成分” - 只是相同的重复代码和相同的类等......实际上您不需要任何 MVVM 框架来实现 MVVM。
一旦你学习并编写了 MVVM,你就会立即遇到问题——我如何以解耦的方式进行 NUnit 测试(例如,这在 Silverlight 中不是小问题)——所以这里所有的 IOC/Inject 框架都发挥了作用。例如 MEF。考虑以下示例以了解有关 Inject 框架的总体情况:
项目“共享”,用“最少分隔符”编写(例如便携式库)
public interface IAmSharedInterface
{
string SayHello();
}
项目“主要”,仅参考“共享”项目
public class IAmMainClass
{
[ImportingConstructor]
public IAmMainClass(IAmSharedInterface SharedInterface)
{
SharedInterface.SayHello();
}
}
项目“实施者”,仅参考“共享”项目
[Export(IAmSharedInterface)]
public class IAmImplementor: IAmSharedInterface
{
public string SayHello()
{
return "Hello from implementator class to whoever using it";
}
}
你看 - “主要”和“实施者”项目之间没有直接引用 - 所有“魔法”都发生在 MEF/Unity 构建/解决过程中。因此,您可以轻松地在 Main 上运行 NUnit 测试,而无需使用“Implementor”项目和“Implementor”和“Main”。还有一种情况是其他项目可以专门为测试目的实现和导出“IAmSharedInterface”。
所以回到 PRISM - 它拥有所有(!)这个。我知道这不是一个容易理解的框架,它不适合简单的“Hello World”程序,但是一旦你学会了它——就没有回头路了。它只是将所有部分粘合在一起,让您在使用任何您想要的最小起订量框架(例如Rhino)时有很大的自由度。
Prism 在 Microsoft 中开发,因此(我希望)它不仅会在 Windows 8 中得到支持,而且会在 Windows 9 和所有未来版本中得到支持。
无论你问什么,它都在里面:MVVM、注入、解耦/插件,易于阅读和测试