I’m definitely not sure, but .NET also has DataProviders, so yes, it seems there’s a pattern. It’s a common concept in OOP to define interfaces that different subclasses have to implement. In this case it’s IDataProvider:
So you can have components that use very different data resources (e.g. array, database, textfile, XML file, yes even punchcards …) but all can be accessed the same way, if they implement this interface.