Rus*_*ova 4 c# idisposable ninject entity-framework-4 asp.net-mvc-3
对于这个Demo,我创建了一个虚假的Database +存储库,如下所示
public interface IDemoRepository
{
string[] GetUsers();
}
public class DemoRepository : IDemoRepository, IDisposable
{
public string[] GetUsers()
{
string[] Users = { "Robert","Linda","Jack"};
return Users;
}
public void Dispose()
{
//do nothing
throw new Exception("Disposed is called");
}
}
Run Code Online (Sandbox Code Playgroud)
public class TestController:Controller
{
protected IDemoRepository _repository;
public BaseController(IDemoRepository repository)
{
_repository = repository;
}
public ActionResult()
{
var users = _repository.GetUsers();
Return View(users);
}
}
Run Code Online (Sandbox Code Playgroud)
我从NUGet安装了ninject并在下面添加了用于解析存储库的代码
kernel.Bind<IDemoRepository>().To<DemoRepository>()
Run Code Online (Sandbox Code Playgroud)
Ninject没有调用DemoRepository.Dispose,我添加了一个断点,即使我当前的代码抛出错误但是Ninject没有调用DemoRepository.Dispose.
任何人都能建议我如何处置这个物体.
如果要处理,请确保您的存储库绑定到Ninject中的请求范围:
kernel.Bind<IDemoRepository>().To<DemoRepository>().InRequestScope();
Run Code Online (Sandbox Code Playgroud)