具有不同生命周期的统一容器 class

unity container class with different lifetimes

我目前正在我的 UnityConfig.cs 中执行以下操作,UnityMvcActivator 在 App_Start 调用它:

container.RegisterType<IUserDal, UserDal>(new PerRequestLifetimeManager());

我也在做这个:

container.RegisterType<IEmailObserver, EmailObserver>(new ContainerControlledLifetimeManager());

我应该提到 IUserDalIEmailObserver 的构造函数中:

public EmailObserver(IUserDal userDal);

现在我想在应用程序启动时启动 EmailObserver 实例,所以我有这个:

`DependencyResolver.SetResolver(new UnityDependencyResolver(container));

container.Resolve<IEmailObserver>();//this line fails

我收到的错误信息是:

Exception is: InvalidOperationException - The PerRequestLifetimeManager can only be used in the context of an HTTP request. Possible causes for this error are using the lifetime manager on a non-ASP.NET application, or using it in a thread that is not associated with the appropriate synchronization context.

我正在尝试实现 Observer Pattern 但我想使用 Unity 注册我的观察者并在应用程序启动时初始化它们。

检查 EmailObserver 构造函数 - 我认为那里的所有类型也应该是单例。