Angenommen, Sie haben eine beliebige Dateneinheit in der Welt. In diesem Beispiel nehmen wir an, es handelt sich um eine Kalkulationstabelle.
Lassen Sie uns auch sagen, Sie haben eine Möglichkeit, Schema/Metadaten für diese Daten zu erhalten/abzuleiten - das heißt, Sie können Typen (zB Double versus String) und Beziehungen (zB diese Spalte bedeutet "Gehalt") und Metadaten (zB Dieses Blatt gilt für den Haushaltsplan für Juni 2009).
Mit dem Typ Provider können Sie eine Art 'Shim-Bibliothek' programmieren, die eine Art Dateneinheit kennt (zB eine Tabellenkalkulation) und diese Bibliothek als Teil der Compiler/IDE-Toolchain verwenden, um Code wie
zu schreiben
mySpreadsheet.ByRowAndColumn.C4
oder etwas, und erhalten Intellisense (Autovervollständigung) und Tooltips (zB die Beschreibung der Zelle C4 als Gehalt für Bob) und statische Typisierung (zB haben sie eine doppelte oder eine Schnur oder was auch immer es ist). Im Wesentlichen bietet dies Ihnen die Tooling-Möglichkeiten von statisch typisierten Objektmodellen mit der Benutzerfreundlichkeit von verschiedenen dynamischen oder Code-generierenden Systemen, mit einigen Verbesserungen bei beiden. Die "Kosten" sind, dass jemand die Shim-Bibliothek schreiben muss (der "Typ-Provider"), aber viele solcher Anbieter sind sehr allgemein (z. B. einer, der OData oder Excel oder WMI oder Ähnliches spricht) und so eine kleine Handvoll Typ-Provider-Bibliotheken macht große Mengen der Weltdaten in Ihrer Programmiersprache mit statischer Typisierung und erstklassiger Werkzeugunterstützung verfügbar.
Die Architektur ist ein offener Compiler, bei dem Provider-Autoren eine kleine Schnittstelle implementieren, die es ihnen ermöglicht, neue Namen/Typen in den Programmierkontext einzufügen. Ein Typ-Provider ist möglicherweise nur eine weitere Bibliothek, die Sie an den Compiler übergeben (eine Referenz in Ihrem Projekt, -r
-ed), mit zusätzlichen Metadaten, die ihn als Typ-Provider kennzeichnen, der an den Kompilierungs-/IDE-/Codegen-Teilen der Entwicklung teilnimmt.
Ich weiß nicht genau, was ein "benutzerdefinierter Mapper" in Ihrem XML-Beispiel ist, um einen Vergleich zu zeichnen.
Haben Sie eine Chance, dass Sie wissen, wann Type Provider verfügbar werden? Danke – jlezard
Nein, tut mir leid, noch keine Informationen. – Brian
Mit benutzerdefinierten Mapper meinte ich eine Bibliothek, die eine XML-Datei in ein stark typisiertes Objektmodell abbildet. Ich kann den großen Unterschied zwischen einer solchen Bibliothek und einer Typ-Provider-Bibliothek nicht sehen. – terjetyl