2012-03-26 6 views
1

私はMVC3プロジェクトに参加しています。私は自分の依存する注入のためにsnapstructuremapを使用しています。 SignalRを使用し始めたときを除いて、私のコントローラーにあるように自分のDIを実装することができない場所を除いて、すべての場所に設置されていました。私はSignalR上で構造マップのDIを実装することに取り掛かっていますが、これを行う方法についての強力なサンプルは見つかりませんでした。 SignalRを使用しているすべての人がNinjectを使用しているようです。mvc3コントローラの中でSignalRのIConnectionManagerを呼び出せますか?

私の目標は、クライアントメソッドを呼び出す前に、私のハブの内部に条件文(サービスを注入する必要があります)を持たせることですが、これは成功しませんでした。

私は代替方法を研究して、私はこの事は、私の開発を遅らせたくなかった、そして私は私が実際に以下のコードを使用して私のコントローラからの私のクライアントのメソッドを呼び出すことができることを発見した:

IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>(); 
dynamic clients = connectionManager.GetClients<MyHub>(); 
clients.myClientScript(); 

この私のために働くが、これが良いアプローチであるかどうかはわからない。特に依存性注入を使用している。

私の質問は次のとおりです。より良いアプローチがありますか?

おかげ

+0

他の質問がありませんでした(http://stackoverflow.com/q/9790433/701062)。構造マップの例をそこに移動しました。 –

+0

さて、そこに進みましょう:) – dmc

答えて

1

現在のクライアントは、この情報は表示されません、しかし、あなたは(原因ポストの間に接続されていないため)SignalRを使用して、コントローラから接続されたクライアントに情報を送信することはできません理由はありません。つまり、SignalRへのStructuremapの取得はかなり簡単です。あなたは私の答えここでこれを達成する方法を正確に見ることができます:https://stackoverflow.com/a/9866374/701062

+0

ありがとう@ Gary.S。私は実際にsignalRを使ってこのようにstructuremapを実装しようとしましたが、var container =(IContainer)IoC.Initialize();を使用しました。 AspNetHost.SetResolver(新しいStructureMapDependencyResolver(コンテナ)); AppStartで – dmc

+0

私はあなたのAspNetHost.SetResolver(StructureMap.ObjectFactory.GetInstance ())を試しました。 AppStartでは、私は無効な引数を取得しています – dmc

関連する問題