Итак, у меня есть метод, открытый из службы 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() при утилизации? Как Dispose и Finalize отличаются?