Disons que vous avez une entité de données arbitraire dans le monde. Pour cet exemple, disons que c'est une feuille de calcul.
Disons également que vous disposez d'un moyen d'obtenir/inférer des schémas/métadonnées pour ces données, c'est-à-dire que vous pouvez connaître les types (par exemple, double ou chaîne), les relations (par exemple, cette colonne signifie "salaire") et les métadonnées (par exemple, cette feuille concerne le budget de juin 2009).
Les fournisseurs de types vous permettent de coder une sorte de "bibliothèque de shim" qui connaît un certain type d'entité de données (par exemple, une feuille de calcul) et d'utiliser cette bibliothèque dans le cadre de la chaîne d'outils du compilateur/de l'IDE afin de pouvoir écrire du code tel que
mySpreadsheet.ByRowAndColumn.C4
ou quelque chose comme ça, et obtenir l'Intellisense (autocomplétion) et les infobulles (par exemple, décrire la cellule C4 comme Salaire pour Bob) et le typage statique (par exemple, faire en sorte que ce soit un double ou une chaîne ou quoi que ce soit). Essentiellement, cela vous donne les possibilités d'outils des modèles d'objets à typage statique avec la facilité d'utilisation de divers systèmes dynamiques ou de génération de code, avec quelques améliorations sur les deux. Le "coût" est que quelqu'un doit écrire la bibliothèque de shim (le "fournisseur de type"), mais beaucoup de ces fournisseurs sont très généraux (par exemple, un qui parle OData ou Excel ou WMI ou autre) et donc une petite poignée de bibliothèques de fournisseurs de type rend de grandes quantités de données du monde disponibles dans votre langage de programmation avec un typage statique et un support d'outils de première classe.
L'architecture est un compilateur ouvert, où les auteurs-fournisseurs mettent en œuvre une petite interface qui leur permet d'injecter de nouveaux noms/types dans le contexte de programmation. Un fournisseur de type peut être simplement une autre bibliothèque que vous passez au compilateur (une référence dans votre projet, -r
-ed), avec des métadonnées supplémentaires qui le marquent comme un fournisseur de types qui participe aux parties compilation/IDE/codegen du développement.
Je ne sais pas exactement ce qu'est un "mappeur personnalisé" dans votre exemple xml pour établir une comparaison.