1

現在、構成ファイルからロードするインスタンスを認識するブートストラップを使用する websocket サーバー ライブラリであるライブラリ (SuperWebSocket) を使用しています。このためにブートストラップ クラスを実装しました (ただし、インスタンスは IoC を使用してロードされません)。また、このサーバーからのコマンドは、アセンブリ リフレクションから読み込まれます。このサーバーを、IoC を使用する DAL およびサービス層と組み合わせて使用​​したいと考えていました。私の主な問題は、ServiceLocator を使用せずに、このコンソール アプリケーション (サーバー) とライブラリとの連携を IoC シナリオに配置する方法が見つからないことです。

通常、カーネル(Ninject)はコンポジションルートに配置する必要があります(多くの周りのベストプラクティスのように見えます..)。ここにいる。また、コマンドはアセンブリ リフレクションから読み込まれます。CommandLoader を実装することはできますが、これは依然として問題であり、それらはすべて同じインターフェイスから継承されます (おそらくマルチバインディングでしょうか?)。それぞれのカスタムインターフェイスを作成できましたが、それらを自動的にロードする方法がまだ見つかりません。それらをロードする方法を見つけたとしても、簡単ではない属性からサービスを取得できる必要があります。

助言がありますか ?

4

1 に答える 1

2

あなたの質問を正しく理解できれば、図書館はすべての作業の入り口になります。この状況では、何をすべきかはフレームワークに依存します。最初にできることは次のとおりです。

  1. ライブラリを調べて、フレームワークにフックしてオブジェクトの作成を傍受する方法を見つけます。
  2. kernel.Inject(this)オブジェクトがライブラリによって作成された後に呼び出します。Ninject.Web拡張子を見てください。そこにいくつかの基本クラスを追加NinjectWebPageしましたWebPage。この新しい基本クラスは、作成後に kernel.Inject を呼び出します。その基本クラスから新しい Web ページを派生させ、プロパティ インジェクションを使用して依存関係を取得できるようになりました。
  3. ServiceLocatorライブラリによって作成されたオブジェクトでパターンを使用します。ただ、このレベルで。より深いものは、依存性注入を使用する必要があります。
于 2013-03-16T22:47:35.190 に答える