Exposing .NET's internal StorageRoot via Reflection for accessing file/stream-based Structured Storage
A stream-like class that doesn't implement IDisposable and needs to be closed manually, and worked with static methods, breaks POLA/POLS.

I would expect to be able to do this:

using(var ms = new MemoryStream(bytes))
using(var root = new StorageRoot(ms))
{
    // do stuff
}


I like the reflection idea to access these otherwise hidden gems, however in a code base that uses objects in a standard/idiomatic way, I see this one sticking out like a sore thumb.

I'd definitely do whatever it takes to make it work with a proper instance.