2012-03-26 92 views
1

我在一个MVC3项目,我正在使用捕捉结构图进行我的依赖关系注入。一切都在原地,除了当我开始使用SignalR时,我无法像在控制器上那样实现我的DI。我一直在Google上搜索关于在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)。在那里移动了结构图示例。 – 2012-03-26 03:56:46

+0

好的,让我们继续:) – dmc 2012-03-26 04:06:08

回答

1

没有理由你无法连接的客户端从您的控制器使用SignalR但是当前的客户端将无法看到此信息(由于POST期间未连接)发送信息。

也就是说,将结构图映射到SignalR中实际上非常简单。你可以在我的答案中看到如何完成此操作:https://stackoverflow.com/a/9866374/701062

+0

谢谢@ Gary.S。我实际上已经尝试用signalR来实现结构映射,但是我使用了var container =(IContainer)IoC.Initialize(); AspNetHost.SetResolver(新的StructureMapDependencyResolver(容器));在AppStart中。 – dmc 2012-03-26 04:04:18

+0

现在我尝试了你的AspNetHost.SetResolver(StructureMap.ObjectFactory.GetInstance ());在AppStart上,但我得到无效的参数 – dmc 2012-03-26 04:05:04

相关问题