Shellのブートストラッパーで利用できるだけでなく、PRISM以外のアプリケーションに組み込むこともできるWPFまたはSilverlightモジュールを作成したいと思います。
つまり、PRISMモジュールをシェルから初期化するのではなく、モジュール自体から初期化する方法はありますか?
究極の目標は、非PRISMアプリケーションで初期化できるWPF /SilverlightPRISMモジュールを用意することです。
Shellのブートストラッパーで利用できるだけでなく、PRISM以外のアプリケーションに組み込むこともできるWPFまたはSilverlightモジュールを作成したいと思います。
つまり、PRISMモジュールをシェルから初期化するのではなく、モジュール自体から初期化する方法はありますか?
究極の目標は、非PRISMアプリケーションで初期化できるWPF /SilverlightPRISMモジュールを用意することです。
これには何の障壁もありません。
IModule
インターフェイスには、パラメーターのない単一のメソッドがありますvoid
: Initialize()
.
Prism 以外のアプリケーションは、そのメソッドを呼び出すことでモジュールを初期化できます。それでおしまい。
他のアプリケーションに別のプラグイン システムと別のインターフェイスがある場合、モジュールはそのインターフェイスも実装でき、インターフェイスが使用する初期化メソッドの本体は単純に を呼び出すことができますInitialize()
。
例えば:
public interface IMyPluginModule
{
void StartModule();
}
public class MyModule : IModule, IMyPluginModule
{
public void Initialize()
{
// actual initialization code here
}
public void StartModule()
{
Initialize();
}
}
一見したよりも少し複雑ですが、実行可能です。Prism 4 をまだ使用しているかどうかはわかりませんが、使用している場合、Microsoft は実際にこのシナリオのガイダンスを提供しています。
http://msdn.microsoft.com/en-us/library/ff921109(v=PandP.40).aspx
2 つのプロジェクトを並行して実行するには、少しプロジェクトを操作する必要があります。動作サンプルを確認する必要がある場合は、「MultiTargeting」と呼ばれる Prism v4 に含まれるサンプルがあります。
ただし、シェル/ブートストラップをオーケストレーションするのではなく、モジュールを単独で初期化できるようにすることに関するあなたの質問は、間違ったアプローチです。基本的には、WPF と Silverlight の 2 つのシェルになります。サンプルを見て、あなたの考えを見てください。
お役に立てれば。