1

我正在尝试使用 Funq DI 注入 Signalr 依赖项

该过程在这里得到了很好的解释,我也尝试遵循这个问题。

Ninject版本运行良好。

现在我正在尝试使用 FunqDependencyResolver 的这个要点将其转换为 Funq 版本。但是这个Funq 版本不起作用,并给出了“System.MissingMethodException:没有为此对象定义无参数构造函数”,这应该是因为它没有注册依赖项。

这是因为 Ninject 版本正在解析为一种方法吗?

4

1 回答 1

3

我们使用了 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);
于 2014-01-20T08:42:59.137 回答