WinCopies.IO1: Hello to a Browsable World!
Semantics vs sense for the computer
In programming language learning, the convention is to begin with the 'Hello World' code snippet. The WinCopies.IO package make you able to say hello to a browsable world.
As everyone knows, a computer is dumb. If you tell it to explore a file system and if you tell it how to do that, it will be able to do that. In the same way, if you tell it how to explore a DB type, it will be able to explore any DB of that type.
However, even once you told that all to the computer, if you ask it to explore its file system and a DB type known by it, but without telling it what kind of thing you precisely want to explore (for example, if you ask it: 'Explore that thing.'), it won't be able to do it. A common example is a GUI: when you implement a control for A, this control will not be compatible with B, even if A and B have common semantic properties, because a computer does not have any notion of semantics.
A solution is interfaces. With them, you can explicit these properties to the computer. It is the purpose of the WinCopies.IO package: exposing wrappers for semantically browsable objects.
IBrowsableObjectInfo
This is where the 'magic' happens: IBrowsableObjectInfo is an interface that explicits some of these properties. With this interface, you can explore anything by using only one control and view-model. Of course, the object you want to explore must have a wrapper. The WinCopies.IO package implements some default wrappers, such as:
- ShellObjectInfo
- ArchiveItemInfo
- RegistryItemInfo
- WMIItemInfo
- PortableDeviceObjectInfo
- DotNetAssembly(Item)Info
WinCopies.IO comes with WinCopies.GUI.IO, a package specialized in IO GUI. This package contains a default WPF explorer control and view-model for the IBrowsableObjectInfo interface. Also, the IBrowsableObjectInfo interface is recursively browsable.
1: Please note that WinCopies.IO and WinCopies.GUI.IO are currently available as preview version.