2010-05-02 6 views
5

Wie der Titel sagt, versuche ich eine Klasse zu verwenden, die in einem Namespace deklariert ist, der in seinem Namen "base" enthält. Denken Sie an eine Situation wie folgt aus:Zugriff auf einen Namespace, der .base in seinem Namen enthält F #

open Foo.base.Bar

In C# würde ich nur @ verwenden, bevor Basis aber Fis scheint das zu ignorieren und zu denken, dass @ ist die Infixoperator für Liste Verkettung verwendet. Da der Namespace zu einer Bibliothek von Drittanbietern gehört, die ich nicht ändern kann, gibt es eine Möglichkeit, auf F # zuzugreifen?

Antwort

6

In F # können Sie ähnliche Sache erreichen, indem Sie den speziellen Namen zwischen zwei Paaren von Symbolen einfügen. Die folgende Beschreibung ist der Trick:

open Foo.``base``.Bar 

Das ist ein bisschen flexibler als in C# - der Name kann fast alles enthalten, so dass man zum Beispiel können die Mitglieder mit Leerzeichen im Namen definieren:

let ``some name!`` = 42 
+3

Dies ist eine praktische Funktion. In F # -Produkteinheitstests haben wir Tests, die wie "member this" benannt werden. Das Hinzufügen eines Verweises auf das Projekt aktualisiert die .fsproj-Datei \ "'() ". :) – Brian