在我的 Asp.Net MVC 项目中,我使用 NInject 提供程序来创建 UnitOfWork 的实例。(我使用 Mindscape.LightSpeed)
这是我的 NinjectModule 类中的绑定示例:
base.Bind<IUnitOfWork>().ToProvider(UnitOfWorkProvider<UnitOfWork>.CreateInstance(_lightSpeedContext, UnitOfWorkProvider.CreateUnitOfWork)).InRequestScope();
这是我在提供程序中创建实例的示例:
protected override T CreateInstance(IContext context)
{
T unitOfWork = default(T);
unitOfWork = this.CreateUnitOfWork();
if (this.ConnectionStrategy != null)
unitOfWork.ConnectionStrategy = this.ConnectionStrategy;
return unitOfWork;
}
像下面的例子那样使用互斥对象会更好吗?
private static readonly Mutex _mutex = new Mutex();
protected override T CreateInstance(IContext context)
{
_mutex.WaitOne();
try
{
T unitOfWork = default(T);
unitOfWork = this.CreateUnitOfWork();
if (this.ConnectionStrategy != null)
unitOfWork.ConnectionStrategy = this.ConnectionStrategy;
return unitOfWork;
}
finally
{
_mutex.ReleaseMutex();
}
}
我在网上没有找到任何将互斥锁与 Ninject 提供程序一起使用的示例,这就是我问这个问题的原因。
最好能解释一下为什么互斥锁在 Asp.Net MVC 的上下文中好或不好。
非常感谢。