PRISMにはすでにMEFとMVVMロジックが含まれています:)
ここで少し説明します。
MVVMは、アプリケーションのロジックを表します。ビュー、ビューモデル、モデルを実際に巧妙に分離する方法。それを行うのに最適な(?)フレームワークがわからない-必要に応じて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();
}
}
プロジェクト「Implementor」、参照のみ「Shared」プロジェクト
[Export(IAmSharedInterface)]
public class IAmImplementor: IAmSharedInterface
{
public string SayHello()
{
return "Hello from implementator class to whoever using it";
}
}
ご覧のとおり、「メイン」プロジェクトと「実装者」プロジェクトの間に直接の参照はありません。すべての「魔法」はMEF/Unityのビルド/解決プロセスで発生します。したがって、「Implementor」プロジェクトおよび「Implementor」と「Main」を使用せずに、MainでNUnitテストを簡単に実行できます。他のプロジェクトが特にテスト目的で「IAmSharedInterface」を実装およびエクスポートできるシナリオもあります。
さて、PRISMに戻りましょう-これはすべて(!)です。すぐに理解するのは簡単なフレームワークではなく、単純な「Hello World」プログラムには適していませんが、一度習得すると、元に戻すことはできません。すべてのパーツを接着するだけで、必要なmoqフレームワーク(Rhinoなど)を自由に使用できます。
PrismはMicrosoftで開発されているので(私は願っています)、Windows 8だけでなく、Windows9および将来のすべてのバージョンでもサポートされる予定です。
MVVM、インジェクト、デカップリング/プラグイン、読みやすくテストしやすい、すべてが内部にあることを尋ねたものは何でも