I need to force the use of \"using\" to dispose a new instance of a class.
public class MyClass : IDisposable
{
...
}
using(MyClass obj = new MyClass())
If you want to force the disposal of resources withing a scope it's possible, but IDisposable is not really needed. With the following code:
public class ResourceHandle
{
public delegate void ResourceProvider(Resource resource);
private string _parms;
public ResourceHandle(string parms)
{
_parms = parms;
}
public void UseResource(ResourceProvider useResource)
{
Resource resource = new Resource(_parms);
useResource(resource);
resource.Close();
}
}
public class Resource
{
private string _parms;
internal Resource(string parms)
{
// Initialize resource
}
internal void Close()
{
// Do cleaning
}
// Public methods of resource
}
You can use the Resource ONLY in this way:
public void foo()
{
ResourceHandle resourceHandle = new ResourceHandle("parms");
resourceHandle.UseResource(delegate(Resource resource)
{
// use resource
});
}
As you can see IDisposable is not really needed here.