Asp.net mvc 4 SignalR.EventAggregatorProxy约束事件问题

Asp.net mvc 4 SignalR.EventAggregatorProxy约束事件问题,asp.net-mvc-4,ninject,signalr,simple-injector,eventaggregator,Asp.net Mvc 4,Ninject,Signalr,Simple Injector,Eventaggregator,在这个问题中,我将其用作SignalR的事件聚合代理 所以我的问题只针对非Ninject用户,所以基本上所有的约束都被忽略了(并且没有任何错误或其他) 我试图改为使用SimpleInjector,或者根本不使用IoC,但没有成功——基本逻辑起作用,但约束被忽略了 尝试1: 所以最基本的尝试就是重用signal.EventAggregatorProxy.EventAggregation.IEventAggregator和IEventAggregator的相同实例 public class App

在这个问题中,我将其用作SignalR的事件聚合代理

所以我的问题只针对非Ninject用户,所以基本上所有的约束都被忽略了(并且没有任何错误或其他)

我试图改为使用SimpleInjector,或者根本不使用IoC,但没有成功——基本逻辑起作用,但约束被忽略了

尝试1:

所以最基本的尝试就是重用signal.EventAggregatorProxy.EventAggregation.IEventAggregator和IEventAggregator的相同实例

public class App
{
    private static Lazy<SignalR.EventAggregatorProxy.EventAggregation.IEventAggregator> _eventAggregator;
    private static Lazy<IEventAggregator> _eventAggregatorProxy;

    public static SignalR.EventAggregatorProxy.EventAggregation.IEventAggregator EventAggregatorOrAnotherProxyWhatever
    {
        get
        {
            if (_eventAggregator == null)
                _eventAggregator = new Lazy<SignalR.EventAggregatorProxy.EventAggregation.IEventAggregator>(() => new EventAggregatorProxy(EventAggregatorProxy));

            return _eventAggregator.Value;
        }
    }

    public static IEventAggregator EventAggregatorProxy
    {
        get
        {
            if (_eventAggregatorProxy == null)
                _eventAggregatorProxy = new Lazy<IEventAggregator>(() => new EventAggregator());

            return _eventAggregatorProxy.Value;
        }
    }
}
在应用程序_Start中,我这样注册:

        var container = new Container();

        container.RegisterSingle<Caliburn.Micro.IEventAggregator, Caliburn.Micro.EventAggregator>();
        container.RegisterSingle<SignalR.EventAggregatorProxy.EventAggregation.IEventAggregator, EventAggregatorProxy>();

        GlobalHost.DependencyResolver = new SignalRSimpleInjectorDependencyResolver(container);
        DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
var container=newcontainer();
container.RegisterSingle();
container.RegisterSingle();
GlobalHost.DependencyResolver=新信号SimpleInjectorDependencyResolver(容器);
SetResolver(新的SimpleInjectDependencyResolver(容器));
我还尝试对信号器使用默认解析器,如下所示:

GlobalHost.DependencyResolver.Register(typeof(signar.EventAggregatorProxy.eventaggregator.IEventAggregator)、container.GetInstance)


什么都不管用。你能指出我做错了什么吗?这不是bug吗?

库将向依赖项解析器询问约束处理程序实例。Ninject可以创建未注册类型的实例(如果它们是具体类型)。内置依赖项解析程序缺少此项

所以你需要手动操作,比如

 var constraint = new Lazy<ConstrainedEventConstraintHandler>(() => new ConstrainedEventConstraintHandler());
            GlobalHost.DependencyResolver.Register(typeof(ConstrainedEventConstraintHandler), () => constraint.Value);
var constraint=new Lazy(()=>new ConstrainedEventConstraintHandler());
GlobalHost.DependencyResolver.Register(typeof(ConstrainedEventConstraintHandler),()=>constraint.Value);
有关完整演示,请参见此分支

你所说的“什么都不管用”是什么意思?你有例外吗?你看到了什么样的行为?你期待着什么?
 var constraint = new Lazy<ConstrainedEventConstraintHandler>(() => new ConstrainedEventConstraintHandler());
            GlobalHost.DependencyResolver.Register(typeof(ConstrainedEventConstraintHandler), () => constraint.Value);