1

WPF アプリケーションで caliburnMicro を使用しています。

UI アプリケーションであるだけでなく、プロセス間通信サーバーでもあります (WCF名前付きパイプを介して使用します)。

各サービスホストはシングルトン ( container.RegisterSingleton(typeof (IMyServiceHost), null, typeof (MyServiceHost));) として登録されます。

の各実装がプロパティをIMyserviceHost保持する場所。WCF ServiceHost

現在の状態では、各サービス ホスト オブジェクト要求は、オブジェクトの解決後にコードでチャネルを開く必要があります。サーバー側チャネル (これは IPC サーバー側からのものです) を開くために、解決のための各サービス ホスト要求がプロパティの をトリガーすることを望みOpen()ます。ServiceHost

既存の Caliburn Micro メソッドを使用することは可能ですか?

登録コード:

container.RegisterSingleton(typeof (IMyServiceHost), null, typeof (MyServiceHost));

次に、コードを解決します。

//Resolve the object
var serviceHost = IoC.Get<IMyServiceHost>();
//Then open the channel
serviceHost.Instance.Open();
4

1 に答える 1

1

SimpleContainerドキュメントのハンドラー登録を見てください。これにより、関数を登録できます。基本的に、次のようなものを登録できます。

() => {
   var serviceHost = IoC.Get<IMyServiceHost>();
   serviceHost.Instance.Open();
   return serviceHost;
}

IMyServiceHostこれは、通常の方法で既に追加されていることを前提としています。そのようにして、アクティベーションの有無にかかわらずリクエストできます。

別のオプションは、グローバルに行うことです。同じドキュメントの高度な機能では、任意のオブジェクトで高度な初期化を行うことができるグローバル アクティベーション フックを設定できます。タイプ チェックを行うだけでIMyServiceHost、オブジェクトを返す前に必要なメソッドを呼び出すことができます。

于 2013-10-16T09:11:00.560 に答える