C'è qualche trappola che dovrei essere consapevole di farlo?Posso fornire un tipo come input per un provider di tipi in F #?
Sapreste del codice esistente che si occupa dello stesso pb che potrei incontrare?
Thks
C'è qualche trappola che dovrei essere consapevole di farlo?Posso fornire un tipo come input per un provider di tipi in F #?
Sapreste del codice esistente che si occupa dello stesso pb che potrei incontrare?
Thks
Purtroppo, non è possibile passare i tipi come parametri statici a un provider tipo. I parametri statici passati utilizzando MyProvider< "first argument", 42 >
devono essere tipi primitivi (come string
, int
e simili). Non vedo la lista da nessuna parte nella documentazione, ma Type
non è sicuramente supportata.
Il problema di questa operazione è che si potrebbe passare typeof<MyType>
dove MyType
è dichiarato nello stesso file del file che sta utilizzando il provider tipo, e così il compilatore F # avrebbe dovuto compilare prima la prima parte di un file, quindi richiamare il provider e quindi continuare. Sembra possibile, ma probabilmente è a bassa priorità per il team di F #.
Il modo migliore per passare le informazioni sul tipo a un provider tipo è quello di dare un nome tipo e quindi ricerca il tipo utilizzando la riflessione (questo funziona solo se il tipo è da un assembly già compilato):
type MyTest = MyTypeProvider<"System.Int32">
Ha senso. Ecco perché, a mio avviso, abbiamo bisogno della nozione di livello di esecuzione. Simile a un'espressione di calcolo, che può alimentare l'ambiente principale con Tipi, senza ricorrere a DLL esterne e il cui codice viene eseguito prima di altri livelli di esecuzione più elevati. – nicolas