Ниже приведен пример кода, написанного коллегой. Мне это кажется совершенно неправильным, но я хотел проверить. Должен ли объект вызвать свой собственный метод Dispose() из одного из своих собственных методов? Мне кажется, что только владелец/создатель объекта должен называть Dispose(), когда это делается с объектом, а не с самим объектом.
Это веб-метод .asmx, который вызывает Dispose() сам по себе. (Тот факт, что это веб-метод, вероятно, связан с вопросом в целом.) В нашей базе кода мы иногда создаем классы веб-сервисов в рамках методов других веб-сервисов, а затем вызываем на них методы. Если мой код делает это, чтобы вызвать этот метод, объект будет тост, когда метод вернется, и я больше не могу использовать этот объект.
[WebMethod]
public string MyWebMethod()
{
try
{
return doSomething();
}
catch(Exception exception)
{
return string.Empty;
}
finally
{
Dispose(true);
}
}
UPDATE: Найдено несколько ссылок, которые связаны между собой: