Ist es möglich einen Namespace zu öffnen, der von einem Type Provider bereitgestellt wird?

8

Gibt es einen Weg zu open einem Namensraum von Typen, die von einem Typ Provider Umsetzung? Ich frage, weil einige der generierten Namenspfade im Code sehr lang und hässlich sind. Ich habe Typenkürzel verwendet, um dies zu mildern, aber offensichtlich ist dies ein manueller Prozess. Das Schlüsselwort F # open unterstützt dies nicht. Gibt es einen anderen Weg? Update: Wie in der Antwort und den Kommentaren darauf hingewiesen, ist das falsch. Sie können einen angegebenen Namespace öffnen. Ich hatte nicht bemerkt, dass ich tief verschachtelte Typen und keinen Namensraum suchte.

    
bentayloruk 06.11.2013, 12:13
quelle

1 Antwort

6

Dies ist schwierig - parametrisierte Typ-Provider (wie die SQL-Standardanbieter oder die F # -Datenanbieter für XML und JSON) müssen alle Typen, die sie generieren (Tabellen, XML-Knoten usw.) innerhalb des generierten Haupttyps ablegen. Daher werden alle Typen, die Sie verwenden möchten, irgendwo als verschachtelte Typen des Haupttyps (mit Parametern) versteckt.

Dies ist sinnvoll - wenn Sie den Typ Provider mit mehreren Parametern verwenden, müssen die für jede Konfiguration generierten Typen separat sein.

Wie @kvb darauf hinweist, können Sie nicht open einen verschachtelten Typ angeben, aber Sie können Typ-Aliase verwenden, um dies etwas weniger schmerzhaft zu machen. Zum Beispiel kann ich mit F # Data einen Alias R definieren, mit dem ich auf alle generierten Domaintypen mit nur zwei zusätzlichen Zeichen zugreifen kann:

%Vor%     
Tomas Petricek 06.11.2013, 21:13
quelle

Tags und Links