Ta "sztuczka", jeśli możesz to tak nazwać, najprawdopodobniej jest spowodowana tym, że proxy
jest typu, którego kompilator nie może zweryfikować, naprawdę implementuje IDisposable
.
Zaletą dyrektywy using
, jest to, że jeśli parametr do niego jest null
, to nie wezwanie do Dispose
zostaną wykonane po wyjściu z zakresu rachunku using
.
Więc masz kod pokazany jest rzeczywiście krótki ręka dla:
var disposable = proxy as IDisposable;
try
{
string s = proxy.Stuff();
}
finally
{
if (disposable != null)
disposable.Dispose();
}
Innymi słowy, to mówi „jeśli ten obiekt implementuje IDisposable, muszę pozbyć się go, kiedy skończę z kolejny fragment kodu. "
+1 dla "jeśli ten obiekt implementuje IDisposable ..." – Justin