所以,我有从WCF服务作为这样暴露的方法:
public GetAllCommentsResponse GetAllComments(GetAllCommentsRequest request)
{
var response = new GetAllCommentsResponse();
using(_unitOfWork)
try
{
Guard.ArgNotNull(request, "request");
var results = _unitOfWork.CommentRepository.Get(d => d.Id > 0).ToArray();
//... Do rest of stuff here
}
catch (Exception ex)
{
response.Success = false;
response.FailureInformation = ex.Message;
Logger.LogError("GetAllComments Method Failed", ex);
}
return response;
}
我有一个全球DataUnitOfWork对象(实现IDisposable),其被通过Ninject通过构造函数的参数时,服务电话打进来,实例化。在调试时,如果我使用
using(_unitOfWork)
在_unitOfWork对象被走出去的范围,然后得到由Ninject再次呼吁后,立即布置(尽管它被标记为配置,所以什么也不会发生。)如果没有using语句,Ninject处理中的设置
长话短说,有经验的这种一般规则? 我已经吓的整个IDisposable的一切东西我看了之后似乎永远不会指示使用它,或者在某些情况下,不拘一格使用它,但它总是让我感到困惑。
任何输入被理解。
哦,还当我在这里打字,无论如何,究竟为什么会出现对GC.SuppressFinalize()的调用处置时? 如何处置和完成有什么不同?