F # non supporta l'aliasing di spazi dei nomi, solo moduli e tipi. Quindi, per risolvere i conflitti tra gli assembly .NET, sfortunatamente dovrai definire gli alias per tutti i tipi che stai utilizzando.
Questo può essere leggermente più semplice grazie al fatto che gli alias di tipo F # vengono visualizzati come normali dichiarazioni di tipo (dal compilatore F #, non dal runtime). Ciò significa che, a differenza di C# using
parola chiave, è possibile definirli in un file spearate:
// Aliases.fs
namespace SysIO
// Open the 'System' namespace to get a bit shorter syntax
// ('type File = File' is interpreted as discriminated union)
open System
type File = IO.File
type Directory = IO.Directory
Nel resto della vostra applicazione, è ora possibile utilizzare SysIO.File
. Devi ancora scrivere gli alias, ma almeno non devi farlo in ogni file ...
fonte
2012-02-21 14:29:26
Questa è una bella soluzione, ho solo bisogno di una manciata di tipi. –
"solo moduli e tipi": sono solo tipi, i moduli non possono essere sottoposti a aliasing. sarebbe felicemente sbagliato. – citykid
felicemente sbagliato sono io. i moduli possono essere sottoposti ad alias in questo modo: modulo ACMEStore = ACME.DB.Store (http://stackoverflow.com/questions/3918744/how-to-use-namespace-or-type-alias-abbreviation) – citykid