Можно ли использовать с использованием синтаксиса для запуска всех объектов, реализующих интерфейс IDisposable, вызывать соответствующий метод Dispose ()?
Например, если объекты ObjectOne и ObjectTwo существуют винтересующий раздел , можем ли мы сделать так, чтобы метод Dispose () обоих объектов был вызван автоматически.Как показал пример, я знал, как сделать это для одного типа класса, но я не знаю, как сделать этот вид трюка для более чем одного типа класса.Поскольку следующий синтаксис недопустим в C #.
// Это недопустимый оператор C #
using( ObjectOne one = new ObjectOne();
OjbectTwo two = new ObjectTwo() )
{
...
// hopefully, the Dispose methods of both **one** and **two** will be called.
}
Конкретный пример, чтобы проиллюстрировать, как вызвать автоматический вызов метода Dispose дляодин тип класса.
namespace ConsoleApplication1
{
class ObjectOne : IDisposable
{
public string ObjectName { get; set; }
public ObjectOne() : this("Empty") { }
public ObjectOne(string objName)
{
ObjectName = objName;
}
public void Dispose()
{
Console.WriteLine("ObjectOne.Dispose " + ObjectName);
}
}
class ObjectTwo : IDisposable
{
public string ObjectTwoName { get; set; }
public ObjectTwo() { }
public ObjectTwo(string objName)
{
ObjectTwoName = objName;
}
public void Dispose()
{
Console.WriteLine("ObjectTwo.Dispose " + ObjectTwoName);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("before");
// make sure that the Dispose method of object one1 and one2 is called
using (ObjectOne one1 = new ObjectOne(),
one2 = new ObjectOne()
)
{
// section of interest
Console.WriteLine("middle");
}
Console.WriteLine("after");
Console.ReadLine();
}
}
}
Спасибо.