Supponiamo di avere qualche entità di dati arbitraria nel mondo. Per questo esempio, diciamo che è un foglio di calcolo.
Supponiamo anche che tu abbia un modo per ottenere/inferire schema/metadati per quei dati - cioè, puoi conoscere i tipi (es. Doppio contro stringa) e le relazioni (es. Questa colonna significa 'salario') e metadati (es. questo foglio è per il budget di giugno 2009).
fornitori di tipo consente di codificare una sorta di 'biblioteca shim' che sa di qualche tipo di entità di dati (ad esempio, un foglio di calcolo), e l'uso che biblioteca come parte della toolchain compilatore/IDE in modo che è possibile scrivere codice come
mySpreadsheet.ByRowAndColumn.C4
o qualcosa del genere, e ottenere Intellisense (completamento automatico) e le descrizioni dei comandi (ad esempio descrivono cella C4 come stipendio per Bob) e tipizzazione statica (ad esempio, hanno si tratti di una doppia o una stringa o qualunque cosa sia). In sostanza, questo ti offre le possibilità di realizzare utensili di modelli di oggetti con staticamente tipizzati grazie alla leva di facile utilizzo di vari sistemi dinamici o di generazione di codice, con alcuni miglioramenti su entrambi. Il "costo" è che qualcuno deve scrivere la libreria shim (il 'type provider'), ma molti di questi provider sono molto generali (ad esempio uno che parla OData o Excel o WMI o whatnot) e quindi una piccola manciata di librerie di provider di tipi rende disponibili enormi quantità di dati del mondo nel tuo linguaggio di programmazione con la tipizzazione statica e il supporto di strumenti di prima classe.
L'architettura è un compilatore aperto, in cui gli autori di provider implementano una piccola interfaccia che consente loro di immettere nuovi nomi/tipi nel contesto di programmazione. Un provider di tipi potrebbe essere solo un'altra libreria che si passa al compilatore (un riferimento nel progetto, -r
-ed), con metadati aggiuntivi che lo contrassegnano come un provider di tipi che partecipa alle sezioni compilazione/IDE/codegen di sviluppo.
Non so esattamente cosa sia un "mappatore personalizzato" nel tuo esempio xml per tracciare un confronto.
qualsiasi possibilità di avere informazioni su quando i provider di tipi diventeranno disponibili? Grazie – jlezard
No, scusa, nessuna informazione ancora. – Brian
Per mappatore personalizzato intendevo una libreria che mappa un file xml in un modello di oggetto fortemente tipizzato. Non riesco a vedere la grande differenza tra una tale libreria e una libreria di provider di tipi – terjetyl