我正在尝试使用 Funq DI 注入 Signalr 依赖项
Ninject版本运行良好。
现在我正在尝试使用 FunqDependencyResolver 的这个要点将其转换为 Funq 版本。但是这个Funq 版本不起作用,并给出了“System.MissingMethodException:没有为此对象定义无参数构造函数”,这应该是因为它没有注册依赖项。
这是因为 Ninject 版本正在解析为一种方法吗?
我们使用了 Windsor,但任何 IoC 的过程都是相同的:
首先创建你的解析器,继承自 signalR DefaultDependencyResolver:
public class CustomContainerResolver: DefaultDependencyResolver
{
public CustomContainerResolver(IocContainer instance)
{
_instance = instance;
}
public override object GetService(Type serviceType)
{
return _instance.Instance.Kernel.HasComponent(serviceType) ? _instance.GetService(serviceType) : base.GetService(serviceType);
}
public override IEnumerable<object> GetServices(Type serviceType)
{
return _instance.Instance.Kernel.HasComponent(serviceType) ? _instance.GetAllInstances(serviceType): base.GetServices(serviceType);
}
}
在您的启动中:
var signalrDependency = new CustomContainerResolver(container);
然后,像往常一样
app.MapSignalR(hubConfiguration);