.NET CF 2.0: Stream implements IDisposable ... kind of?

Posted by mvanbem on Stack Overflow See other posts from Stack Overflow or by mvanbem
Published on 2010-05-18T15:35:13Z Indexed on 2010/05/18 15:40 UTC
Read the original article Hit count: 151

Filed under:
|
|
|

I've run into something odd in a .NET CF 2.0 project for Pocket PC 2003 (Visual Studio 2005). I was dealing with a System.IO.Stream object and found that the IDE wouldn't auto-complete the Dispose() method. I typed it in manually and received:

'System.IO.Stream.Dispose(bool)' is inaccessible due to its protection level

The error is referring to the protected Dispose(bool) method. Dispose() is either private or not present.

Question 1: How is this possible? Stream implements IDisposable:

public abstract class Stream : MarshalByRefObject, IDisposable

... and IDisposable requires a Dispose() method:

public interface IDisposable
{
    void Dispose();
}

I know the compiler won't let me get away with that in my code.

Question 2: Will I cause problems by working around and disposing my streams directly?

IDisposable idisp = someStream;
idisp.Dispose();

The implicit cast is accepted by the compiler.

© Stack Overflow or respective owner

Related posts about .NET

Related posts about compact-framework