You could also use a DynamicProxyDynamicProxy to extend the Dispose()Dispose() method. thisThis way you could do something like:
using (var wrapperdProxy = new Proxy()) { // Do whatever and dispose of Proxy will be called and work properly. }
using (var wrapperdProxy = new Proxy<yourProxy>()) { // Do whatever and dispose of Proxy<yourProxy> will be called and work properly. }