public void Test1() { BaseResource aStream = new DerivedResource(); aStream.Close(); // Allowed // aStream.Dispose(); // Cannot compile ((IDisposable)aStream).Dispose(); // Allowed // // This one works as well, because newStream calls the explicit implemented // IDisposable.Dispose method // using (BaseResource newStream = new DerivedResource()) { // // Do something // } }
public void Test3() { BaseResource aStream = new DerivedResource(); aStream.DoSomething(); }