具有不同生命周期的统一容器 class
unity container class with different lifetimes
我目前正在我的 UnityConfig.cs
中执行以下操作,UnityMvcActivator 在 App_Start
调用它:
container.RegisterType<IUserDal, UserDal>(new PerRequestLifetimeManager());
我也在做这个:
container.RegisterType<IEmailObserver, EmailObserver>(new ContainerControlledLifetimeManager());
我应该提到 IUserDal
在 IEmailObserver
的构造函数中:
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 构造函数 - 我认为那里的所有类型也应该是单例。
我目前正在我的 UnityConfig.cs
中执行以下操作,UnityMvcActivator 在 App_Start
调用它:
container.RegisterType<IUserDal, UserDal>(new PerRequestLifetimeManager());
我也在做这个:
container.RegisterType<IEmailObserver, EmailObserver>(new ContainerControlledLifetimeManager());
我应该提到 IUserDal
在 IEmailObserver
的构造函数中:
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 构造函数 - 我认为那里的所有类型也应该是单例。